如何用Matlab阅读特定的行

时间:2016-09-20 22:16:25

标签: matlab

以下是我的数据文件:

1

num   num  num

num   num  num

num   num  num

num   num  num

num   num  num

2

num   num  num

num   num  num

num   num  num

num   num  num

num   num  num

3

num   num  num

num   num  num

num   num  num

num   num  num

num   num  num

。 。

1000

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行作为矩阵,依此类推......

谢谢!

1 个答案:

答案 0 :(得分: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);

有关fscanf文档,请参阅https://www.mathworks.com/help/matlab/ref/fscanf.html