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