1

我有一个庞大的数据,有 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 循环?

4

1 回答 1

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
于 2012-09-18T13:12:51.180 回答