2016-09-20 51 views
0

这里读特定行是我的数据文件看起来像:如何用Matlab

num num num 

num num num 

num num num 

num num num 

num num num 
num num num 

num num num 

num num num 

num num num 

num num num 
num num num 

num num num 

num num num 

num num num 

num num num 

。 。 。

num num num 

num num num 

num num num 

num num num 

num num num 

'NUM' 是指不同的浮点数,和1,2,3,...,1000也是文件的一部分,占据各一行。我想要做的是,我需要从时间步1到1000的循环,并且在每个步骤中,我需要读取它下面的3列浮点数块作为三个列向量。然后我继续下一个时间步,阅读下面的方块,直到我完成了所有的阅读。

我怎么能用Matlab读这个文件?总之,我想要做的是读第2行到第6行作为矩阵,然后将第8行到第12行作为矩阵,然后将第14行到第18行作为矩阵,等等......

谢谢!

+0

如果这是你只需要导入一次的东西,你可能可以使用内置的数据导入工具而不是脚本来做到这一点 –

+0

所以,我正确理解你的数据文件的标签与每隔6行是下一个数字? – user1543042

+0

基本上我想要做的就是读第2行到第10行作为矩阵,然后下一次从第12行到第20行作为矩阵,然后是22到30矩阵,依此类推。 – Damien

回答

1

如下您可以阅读文本文件:

%Open text file 
f = fopen('num.txt', 'r'); 

num_matrices = 1000; 

%Initialize cell array - hold matrices. 
C = cell(num_matrices, 1); 

for i = 1:num_matrices 
    %Read index (to be ignored). 
    idx = fscanf(f, '%f', 1); 

    %Read 6x3 matrix into A 
    A = fscanf(f, '%f', [3, 6])'; 

    %Store matrix in cell array C. 
    C{i} = A; 
end 

fclose(f); 

参考https://www.mathworks.com/help/matlab/ref/fscanf.htmlfscanf文档。