我想转换2d矩阵,例如:
10 2
3 5
到(row,col,value)CSV文件,例如:
1,1,10
1,2,2
2,1,3
2,2,5
是否可以在单个Matlab命令中完成?
答案 0 :(得分:2)
我没有找到使用单个命令的方法,但请尝试以下代码:
[i1,i2] = ind2sub(size(A),1:numel(A));
csvwrite('test.csv',[i2',i1',reshape(A',numel(A),1)]);
输出结果为:
type test.csv
1,1,10
1,2,2
2,1,3
2,2,5
答案 1 :(得分:2)
假设A
是输入矩阵,可以在这里建议两种方法。
fprintf
的解决方案 -
output_file = 'data.txt'; %// Edit if needed to be saved to a different path
At = A.'; %//'
[y,x] = ndgrid(1:size(At,1),1:size(At,2));
fid = fopen(output_file, 'w+');
for ii=1:numel(At)
fprintf(fid, '%d,%d,%d\n',x(ii),y(ii),At(ii));
end
fclose(fid);
dlmwrite
的方法 -
At = A.'; %//'
[y,x] = ndgrid(1:size(At,1),1:size(At,2));
dlmwrite(output_file,[x(:) y(:) At(:)]);
一些快速测试似乎表明fprintf
在不同的输入数据中表现更好。