使用fprintf在CSV文件中编写输出时,我一直遇到错误。我其实想把我的结果写在CSV文件中。我已经尝试了不同长度的矩阵,即使有两列,我也会得到相同的错误。这里有什么错误,如何解决这个错误?
示例代码:
colname = {'col1' 'col2' 'col3'};
fid = fopen('test.csv','w');
fprintf(fid, '%s, %s, %s\n', colname{1:});
for p=1:5
% <Some code>
fname = %reading image name from a directory
% <Some code>
val1 = %calculating value1
val2 = %calculating value2
datacol = {fname val1 val2};
fprintf(fid, '%s, %f, %f\n', datacol{p+1:});
end
fclose(fid);
错误:
???指数超过矩阵维度。 at fprintf(fid,'%s,%f,%f \ n',datacol {p + 1:});
P.S。:写作“datacol = {fname val1 val2};” as“datacol = {fname,val1,val2};”带来了同样的错误信息。
答案 0 :(得分:2)
您正在索引datacol的单元格内容。 如果我没有弄错,datacol看起来像这样:
{'some_string_for_the_name', 1, 2}
其中1和2是val1和val2。 在循环期间,您可以访问datacol {p + 1},对于p = 3,显然是datcol {4}。 由于您的单元格只有三个元素,因此索引第四个元素将导致错误。您可能想要做的是打印val1和val2的行,不是吗? 将你的fprintf改为
fprintf(fid, '%s, %f, %f\n', datacol{1}, datacol{2}, datacol{3});
应该解决你的问题。