如何使用textread获取每个第n行

时间:2012-09-18 12:45:38

标签: matlab

我有一个巨大的数据,有7个列和20000行。我让Matlab阅读mydata:

[tdata zdata kdata ldata mdata ndata pdata]=textread('mydata.txt')

但我需要的是其他东西。我想让Matlab每1000次收集一次。从数据行开始。帮助textread给出第一个第n个数据的解释:

[tdata zdata kdata ldata mdata ndata pdata]=textread('mydata.txt',n).

有没有办法通过少量的textread格式更改?或者我应该写一个for循环?

1 个答案:

答案 0 :(得分:2)

如果您阅读所有数据,并且之后裁掉不需要的数据,这可能是最简单的:

[tdata zdata kdata ldata mdata ndata pdata] = textread('mydata.txt')

tdata = tdata(1:1000:end);
zdata = zdata(1:1000:end);
kdata = kdata(1:1000:end);
ldata = ldata(1:1000:end);
mdata = mdata(1:1000:end);
ndata = ndata(1:1000:end);
pdata = pdata(1:1000:end);

如果内存开销太大,或者您发现这是不可接受的,那么您将不得不使用fgetl编写一个循环,其中包含以下内容:

fid = fopen('mydata.txt', 'r');
i = 0;
while (~feof(fid))
    i = i + 1;
    line = fgetl(fid);

    if mod(i, 1000) == 0
        parsed = textscan(line, '%f%f%f%f%f%f');
        %# etc.

    end
end