保存文本文件matlab

时间:2014-04-09 23:02:20

标签: matlab matrix text-files printf

关于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的方法并重写我的新矩阵,因为它正在对值进行排序。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

问题在于MATLAB将数据存储在column-major order中,这意味着当您执行s1(:)时,前三个值是第一列中的前三个值 而不是第一排。 (这是fprintfs1中读取值的方式。)例如:

>> 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.');