关于fprintf的另一个问题
我有一个要缩短的矩阵s(n,5)(只需将第3,4和5列取成s1(n,3),并用不同的名称保存。
s1=s(:,3:5);
txtfilename = [Filename '-1.txt'];
% Open a file for writing
fid = fopen(txtfilename, 'w');
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f %f %f\n', s1);
fclose(fid);
我认为我不了解使用fprintf并重写新矩阵的方法,因为它正在对值进行排序。
谢谢你的帮助
问题是MATLAB是以列优先顺序存储数据的,这意味着当您这样做时s1(:)
,前三个值是第一列中的前三个值,而不是第一行。(这是从中fprintf
读取值的方式s1
。)例如:
>> M = magic(3)
M =
8 1 6
3 5 7
4 9 2
>> M(:)
ans =
8
3
4
1
5
9
6
7
2
您可以简单地转置矩阵以所需的方式输出:
fprintf(fid, '%f %f %f\n', s1.');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句