1

私は7つの列と20000行の巨大なデータを持っています。Matlabにmydataを読み取らせます。

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

しかし、私が必要としているのは別のものです。Matlabに1000ごとに収集させたい。データからの行。最初の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 に答える