关于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的方法并重写我的新矩阵,因为它正在对值进行排序。
感谢您的帮助
答案 0 :(得分:1)
问题在于MATLAB将数据存储在column-major order中,这意味着当您执行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.');