2013-02-28 85 views
1

我正在做一個操作來獲得矩陣M_T。這個矩陣將被保存到一個文本文件中。並且該文本文件將被再次用作主要數據文件。這必須重複100次。最後,我還想將生成的100個文本文件中的所有數據保存到名爲final_result.txt的單個文本文件中。我無法弄清楚如何在循環中用不同的名字保存不同的文本文件。我試着寫下面的代碼。但它顯示錯誤。將每個數據循環保存爲matlab中的文本文件

for k=1:100 

fid = fopen('data1.txt'); 
A = textscan(fid, '%f %f %f ') ; 
%read the file 
a = A{1}; 
b = A{2}; 
c = A{3}; 
p=[a b c]; 
p_t=p.'; 
M=rotationMatrix*p_t; 
M_T=M.'; 


fid = fopen('data1.txt', 'wt'); 
fprintf(fid,' %f\t %f\t %f\n',M_T); 
fclose(fid); 

textfilename = ['result' num2str(k) '.txt']; 
fid1 = fopen('result'k '.txt', 'wt'); 
fprintf(fid1,' %f\t %f\t %f\n',M_T); 
fclose(fid1); 

end 

回答

1

嘗試此

textfilename = ['result' num2str(k) '.txt']; 
fid1 = fopen(textfilename, Write); 
... 

這應該產生一個單獨的文件resultk.txt,其中k = 1,...,100。 此外,您打開輸入文件兩次,但只關閉一次。我認爲最好在打開閱讀文檔之前關閉文件,然後再打開文件進行閱讀。 如果這不能解決問題,請嘗試發佈您獲得的特定錯誤消息。

輸出所有文件到主文件,做這個循環結束後的循環開始

fidresult = fopen('final_result.txt', Write); 

然後在每次迭代

fprintf(fidresult,' %f\t %f\t %f\n',M_T); 

然後前

fclose(fidresult) 

這應該在每次迭代時將您的矩陣輸出到主結果文件,此外還要創建一個個體每個循環迭代的al文件

+0

感謝它解決了這個問題,但我也希望將所有100個文本文件中的數據合併爲一個文本文件,一個接一個地排列。 – user2119126 2013-02-28 11:02:30

+0

然後,只需在開始時創建主文件,然後在循環完成後關閉文件之前,每次迭代都會將矩陣寫入該文件 – mathematician1975 2013-02-28 11:24:12

+0

我試過這樣做,但它並未按順序保存數據。 – user2119126 2013-02-28 11:49:05

相關問題