【发布时间】:2014-08-20 22:45:07
【问题描述】:
我有多列数据,大约 200,000 个元素长:
date = {'date1','date2',...'dateN'};%Strings
column2 = [4,7,...,valueN];%Integers
column3 = [2.4,3.1,...,valueN];%Doubles
我需要快速将它们写入格式为 CSV 的文件
DateHeader,Column2Header,Column3Header
date1,4,2.4
date2,7,3.1
.,.,.
.,.,.
.,.,.
dateN,valueN,ValueN
我一直在使用:
fid = fopen(filename,'w+');
fprintf(fid,'%s,%s,%s\n',{'DateHeader','Column2Header','Column3Header'});
for a=1:length(date)
fprintf(fid,'%s,',date{a});
fprintf(fid,'%g,'column2(a));
fprintf(fid,'%g\n'column3(a));
end
但这非常慢。当使用textscan 将文件读回不到一秒时,写入一个文件需要一分钟多的时间。我知道csvwrite,但这不接受元胞数组输入(它必须是一个元胞数组才能包含日期列)
【问题讨论】:
-
你试过
csvwrite函数吗? -
...或 dlmwrite。您也可以考虑使用 xlswrite 写入 Excel,然后转换为 csv。
-
@gire 这适用于细胞矩阵吗?文档只提到了数字矩阵。
-
@Dan csvwrite 仅适用于数字数据。
-
写入 Excel,当然。如果你想写一个单元格检查这个贡献在 Matlab 中心:cell2csv