我希望以MATLAB代码的形式从csv文件中写出一些信息。
在MATLAB代码中,我将标题存储为单元格数组:
ToCSV={'Location' 'Weight_factor' 'Average' 'Maximum' 'Minimum'};
我通过循环将行附加到此单元数组。示例声明是:
ToCSV={ToCSV; {'EastLocation' 0.5 1e+3 1e+4 1e+2} };
我希望将其打印为csv文件。我使用了以下例程给出错误:
fid = fopen('outfile.csv','w');
fprintf(fid,'%s, %s, %s, %s, %s\n',ToCSV{1,:});
fprintf(fid,'%s, %f, %10.2e, %10.2e, %f\n',ToCSV{2:end,:});
fclose(fid);
>>Error using fprintf
>>Function is not defined for 'cell' inputs.
有人可以提供指导来实现这一目标吗?
我也试过csvwrite
,但显然它与单元格数组不太合适。
答案 0 :(得分:2)
问题在于以下陈述
ToCSV={ToCSV; {'EastLocation' 0.5 1e+3 1e+4 1e+2} };
这会在单元格数组中生成一个单元格数组,以便在索引ToCSV
时得到一个单元格数组。我想你想连接这样一行:
ToCSV=[ToCSV; {'EastLocation', 0.5, 1e+3, 1e+4, 1e+2} ];
或
ToCSV(end+1,:) = {'EastLocation', 0.5, 1e+3, 1e+4, 1e+2};
逗号只是让它更容易阅读。
答案 1 :(得分:1)
aa=ToCSV{1,:};
bb=ToCSV{2,:};
fid = fopen('outfile.csv','w');
fprintf(fid,'%s, %s, %s, %s, %s\n',aa{:});
fprintf(fid,'%s, %f, %10.2e, %10.2e, %f\n',bb{:});
fclose(fid);