在使用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);错误:
???索引超过矩阵维数。在fprintf(fid,‘'%s,%f,%f\n',datacol{p+1:});
P.S.:将"datacol = {fname val1 val2}“写入"datacol = {fname,val1,val2}”会带来相同的错误消息。
发布于 2015-07-11 10:48:22
您正在索引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});应该能解决你的问题。
https://stackoverflow.com/questions/31355558
复制相似问题