MATLAB - 使用fprintf在CSV文件中写入输出时出错

时间:2015-07-11 09:22:15

标签: matlab printf

使用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};”带来了同样的错误信息。

1 个答案:

答案 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});

应该解决你的问题。