通过MATLAB 调用大量csv里的数据

Matlab 调用文件夹内的excel文件

当利用Matlab做数据分析的时候,经常会出现想调用N个excel文件里的信息,这个时候就可以利用 [csvread] 一次性读取多个excel里面的内容并全部保存到一个wrokwpace里面
*2019年之后的Matlab推荐使用 readmatrix,两者都行。

只想看结果可以直接跳转完整代码


思路

  1. 利用 [ls]
db=ls

读取文件夹内所有文件名的字符信息。
可以得到db的值如下:
在这里插入图片描述

  1. 再将db的值转换为字符串
    并利用 deblank 将多余的空白给去除
db1=string(db);
db1=deblank(db1);

可以得到如下:
在这里插入图片描述

  1. 取出自己想要的excel文件名
    (这里去掉了第一行第二行,和最后几行的其他文件名)
    并利用 [length] 计算他们的行数,用来之后的for循环
data=db1([3:50],1);
l = length(data);
  1. 利用for遍历所有想要读取的文件,并把文件名去读出来
    (因为原始数据第20行开始才是数据,之前都是文字文本,所以这里从20行开始读取)
name=['a=csvread(''',data(i,1),''',20,1);'];

可以获得如下效果
在这里插入图片描述
并利用 strcat 将文字列合并可以获得如下效果:
在这里插入图片描述

  1. 通过 eval 运行上述的a命令,并保存到我想要的工作间里,
    第一列为(分离了后缀之后的)文件名,第二列为内嵌数据。
    如下图:
    在这里插入图片描述
    通过这个数据库,想要读取任意excel里的文件时只需要调用slipdata1里面的内嵌数据就可以了。

  2. 最后保存这个想要的workspace,把不想要的都删除。


完整代码

clear
db=ls;
db1=string(db);
db1=deblank(db1);
data=db1([3:50],1);
l=length(data); %计算文件数
for i=1:l
   test_data(i,1)={data(i,1)};
    name=['a=csvread(''',data(i,1),''',20,1);'];%20行开始读取
    name1=strcat(name(1,1),name(1,2),name(1,3)); %文字列合并
    eval(name1);	%运行csvread
    slipdata=strsplit(test_data{i,1},'.');  %分离.csv字符
    slipdata1(i,1)={slipdata(1,1)};
    slipdata1(i,2)={a};
    clear a;
end
%clearvars -except slipdata1   %只保留想要的数据
%save('slipdata1')


小结

  • 简单读取csv文件的方法还有很多,这里给出了想要大量读取文件夹内csv文件并保存到一个数据库里的操作。
  • 如果有更好的做法希望能告诉我,这里也只是个人尝试。
  • csvread 已经是Matlab不推荐的用法了,Matlab推荐使用readmatrix。笔者习惯了使用csvread,这里也没有发现有什么问题。欢迎补充readmatrix的用发。

参考

MathWorks Help Center.


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

### 如何在MATLAB中从CSV文件读取数据 #### 使用`readtable`函数 为了高效地处理CSV文件,在MATLAB中推荐使用`readtable`函数。此方法能够自动识别并解析表头,同时支持多种数据类型的混合输入[^1]。 ```matlab % 定义CSV文件路径 filename = 'example.csv'; % 调用readtable加载整个CSV文件到表格变量T中 T = readtable(filename); ``` #### 处理含有字符串和其他复杂数据类型的CSV文件 当面对包含字符串或其他特殊格式的CSV文件时,可以调整参数以适应特定需求: - `Format`: 自定义每列的数据类型。 - `HeaderLines`: 指定跳过的头部行数。 - `Delimiter`: 设置字段分隔符,默认为逗号。 ```matlab options = detectImportOptions(filename); % 获取默认选项 setvaropts(options,'VariableNames',{'ColA','ColB'},'Formats', {'%s','%f'}); % 修改某些列的名称和格式 data = readtable(filename, options); % 应用修改后的配置读取数据 ``` 对于更复杂的场景,比如存在多级索引或多维数组的情况,则可能需要借助第三方工具包如cnpy来辅助完成操作[^2]。 #### 错误处理机制 为了避免因错误设置而导致程序崩溃,可以在调用`readtable`之前加入验证逻辑,确保传入正确的参数组合[^4]: ```matlab if ~isfile(filename) error('指定的文件不存在'); end try T = readtable(filename); catch ME disp(['发生异常:',ME.message]); end ``` 通过上述方式,能够在MATLAB环境中灵活有效地管理来自CSV源的各种结构化数据集。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cykaede

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值