PDA

View Full Version : MATLAB Leggere file da posizione precisa


Heisemberg
10-06-2014, 16:17
Ciao a tutti,
ho un file di testo con una serie di 128x128 dati numerici separati da spazio ed alcune righe di intestazione in alto.
Che comando devo usare per creare un vettore "A" che contenga i dati della 20-esima riga, dalla colonna64 alla colonna 128?

E per creare un vettore "B" che contenga i dati della 20-esima colonna, dalla riga 70 alla riga 9?

Grazie.

Heisemberg
10-06-2014, 17:42
Sono riuscito col comando:

dati = dlmread('file.txt', '\t', 'BL1..BL64');

e mi legge la colonna BL dalla riga 1 alla 64. Puņ andare o presenta problemi nascosti?

Altra domanda, il mio file ha 8 righe di intestazione, con parole, numeri e spazi bianchi. Fin'ora li ho cancellati a mano, come posso dirgli di non leggerli?

Heisemberg
10-06-2014, 20:49
Ok. e sai dirmi come con un esempio?

Heisemberg
11-06-2014, 08:14
Io ti ringrazio Antonio, approfondirņ quei comandi ma gia ho cercato online la soluzione prima di scrivere qui.

Un esempio proprio non puoi farmelo?

Supponiamo voglia leggere i valori numerici e saltare l'intestazione di questo file tra le due linee:

________________________________

Intestazione 1 0 5
commenti vari

25 78 125 248 12 36
0.2 15 74 259 32 0.325
________________________________

Heisemberg
11-06-2014, 13:57
Sto cercando di trovare il comando giusto con la corretta sintassi.
Un esempio poi aiuta molto a capire.

Se lo sai scrivi sto esempio che ci metti un minuto, se non lo sai evita di far polemica che non capisco a cosa serve.

Heisemberg
11-06-2014, 20:11
Certo che ho fatto help fscanf ma la descrizione e le due righe di esempio non dicono come saltare farti del file.

Poi non so per quale motivo assumi questo tono arrogante, non hai idea di chi io sia e cosa faccia.

Ti ripeto, sei non vuoi aiutarmi oltre non rispondere.

Heisemberg
12-06-2014, 16:43
Ho trovato la soluzione:

Basta inserire il comando fgets in un ciclo for per saltare il numero di righe di intestazione e poi leggere i dati con fscanf.

Esempio per file con 2 righe di intestazione (contano anche le righe vuote)
file.txt:
________________________________

Intestazione 1
Intestazione 2

1 2 3
4 5 6
________________________________
fid = fopen ( file.txt,'r');

for i=1:4
tline = fgets(fid);
end

A = fscanf (fid, '%f',[3 2]);
fclose(fid)