2014-04-09 138 views
1

另一个问题上fprintf中保存文本文件MATLAB

我有一个矩阵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

的问题是,在column-major order 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.'); 
+0

谢谢你,我知道了! – user1166251