/ / come ottenere l'ennesima riga con textread - matlab

come ottenere l'ennesima riga con textread - matlab

Ho un enorme numero di dati, con 7 colonne e 20000 righe. Lascio che Matlab legga mydata:

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

Ma quello di cui ho bisogno è qualcos'altro. Voglio lasciare che Matlab raccolga ogni 1000. Riga dai dati. Aiuta a Textread a dare una spiegazione per il primo ennesimo dato:

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

C'è un modo per farlo con una piccola modifica del formato textread? O dovrei scrivere un ciclo for?

risposte:

2 per risposta № 1

Probabilmente è più facile se leggi tutti i dati e successivamente ritagli i dati indesiderati:

[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);

Se l'overhead di memoria è troppo grande o lo trovi inaccettabile, dovrai scrivere un ciclo con fgetl, qualcosa in questo senso:

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