通过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 国际许可协议进行许可。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cykaede

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

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

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

打赏作者

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

抵扣说明:

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

余额充值