现在有100个左右csv格式文件,如何用matlab依次读取文件,提取所需要的列并且按列输出至txt文本中呢?

如果csv难以读取,我可以改成.xls的格式操作。

你可以在D盘里建一个叫data的文件夹,把你的100个csv文件放进去。
如果你的csv文件是数值型的可作如下操作。
假设csv文件中第一列第二列为你要的
file=dir('D:\data\*.csv');
file_name=cell(1,1);
file_data=cell(2,1);
for i=1:size(file,1)
file_name{i,1}=file(i).name;
file_data{i,1}=csvread(['D:\data\',file_name{i,1}]);
file_data{i,1}=file_data{i,1}(:,[1,2]);
end
for i=1:size(file,1)
fid=fopen(['D:\data\',num2str(i),'.txt'],'wt');
for j=1:size(file_data{i,1},1)
for k=1:size(file_data{i,1},2)
fprintf(fid,'%d\t',file_data{i,1}(j,k));
end
fprintf(fid,'\n');
end
end
fclose(fid);追问

十分感谢,搞了半天终于把你的代码弄懂了。但是你理解的我的意思有点误差。我说的是输出至txt文本是全部按列输出到一个txt文本不是一个文件一个txt。还有我的csv文件里有一些时间格式比如2008-05-01这样的,能提取出来么

追答

因为日期格式很难以正确格式读入,建议你把所有的csv文件都转换成txt格式,(建议你用统一转换格式的软件)然后用textread函数读入,挑选你想要的列读入,然后在用matlab写出来.
textread函数是用详见
http://blog.sina.com.cn/s/blog_67bf79370100l845.html

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-30
建议使用dir函数
A=dir('*.csv')
这样就可以把所有csv格式文件的名称读进来,然后就可以使用循环一次读取文件并处理!追问

谢谢!那如何对csv文件进行操作呢?我知道对excel有xlsread函数,对于csv有没有类似的列提取的函数呢?还有如何将这100个文件中的某一列全部提取在txt中输出为一列呢?

追答

使用fpoen打开,fread函数读取

相似回答