2013-06-22 36 views
0

我需要使用「IMPORTDATA」運行一個腳本,但我的文件在底部過多的列在上面,像這樣:MATLAB - 在文本文件中添加數

例1

2 2 3 2 
2 2 1 1 
1 0 
2 4 
1 1 2 200000 80000 

它從4列開始,以5)結束,所以當我使用importdata時,它會生成一個有4列的矩陣,損壞我的文件。我想要做的是在第一個數據行(或第二個文本行)的末尾添加任意數字,優先爲0,以使其將文件讀取爲5列矩陣,如下所示:

示例1

2 2 3 2 0 
2 2 1 1 0 
1 0 0 0 0 
2 4 0 0 0 
1 1 2 200000 80000 

在其他列的零點是,據我瞭解,在5列的矩陣的「IMPORTDATA」的結果,我不需要給他們寫了。如何才能做到這一點?

回答

0

您可以使用textscan在數據讀取。以下是如何在閱讀您的文件:

fid = fopen('example.txt'); 
mat = textscan(fid,'%d %d %d %d %d','CollectOutput', 1); 
mat = mat{1}; % accesses matrix from cell array 
mat(isnan(mat)) = 0; % sets NaN values to 0 
fclose(fid); 

而且結果:

mat = 

      2   2   3   2   0 
      2   2   1   1   0 
      1   0   0   0   0 
      2   4   0   0   0 
      1   1   2  200000  80000 

然後,您可以保存這個新的文件是這樣的:

fid = fopen('newfile.txt','w'); 
fprintf(fid,'%d %d %d %d %d\r\n', mat); 
fclose(fid); 

importdata讀它。

+0

我不明白爲什麼他在文件中讀取兩次... – Oleg

+0

我不能完全肯定,如果我的理解這個問題,但我認爲他要用IMPORTDATA,因爲它包含在一個腳本他不想要修改並且想要修改文本文件。 – Molly

+0

是的,正是出於這個原因。 我已經試過您發送的代碼,但結果是: 2 2 1 2 1 ... 1 2 2 0 4 ... 1 1 3 1 0 ... 0 2 1 2 1 ... 0 0 200000 0 0 ... 0 0 0 80000 0 ... 因此,它的種類顛倒了我的矩陣,並且比以前更糟。問題是什麼? – user2512293