2014-04-09 174 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