2013-06-22 35 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