Salve a tutti,
ho un file di testo contenente sia dati numerici che caratteri, vorrei leggerlo e scriverne un altro estrapolando solo i dati numerici dal primo.
la struttura del file da leggere è la seguente:
le prime 4 righe sono di intestazione, composte da caratteri. il resto del file è suddiviso in colonne
la quinta riga contiene i titoli dei dati di ogni colonna sottostante ancora composta da caratteri
poi ci sono i dati: le prime due colonne sono caratteri il resto sono dati numerici.
incollo un'esempio del testo per cercare di essere più chiaro:
******
Experiment: exp1
User:
Library dependency list:
Programme
LABEL STATUS ERROR TIME CC_1.Combustor.MR(-) CC_1.Combustor.P[1](Pa) CC_1.Combustor.Ptot(Pa) CC_1.Combustor.T[1](K)
"transient-1" INTEG_BEGIN 0 0 3.9 3000000 3000000 3500
"transient-1" IS_EVENT 0 1.00000247e-010 3.9 3000000 3000000 3500
"transient-1" IS_EVENT 0 1.00000247e-010 3.9 3000000 3000000 3500
*******
vorrei leggere questo file utilizzando Matlab e produrne un altro che contenga solo le colonne di dati nello stesso ordine del primo.
grazie mille in anticipo per l'aiuto!
P.S.
Ho trovato una soluzione molto rozza che mi costringe a cancellare manualmente le prime righe dei file (ne ho molti di questa tipologia da processare) e di cambiare diverse impostazioni a seconda del numero di colonne che lo compongono. Allego il codice
close all
clear all
clc
report = fopen("prestazioni.rpt",'r');
rpt = textscan(report,'%s %s %f %f %f %f %f %f %f %f %f %f'); %cambiare manualmente numre %f in base alle colonne di dati
n = 12; % aggiornare manualmente in base numero colonne di dati
i = 1;
for j = 1:(n-3) %numero colonne file finale
k = 3+j; %scarto le prime tre colonne del file input
B(:,j) = rpt{k};
end
C = B';
out = fopen("prestazioni.dat",'w');
fprintf(out,"%f %f %f %f %f %f %f %f %f\r\n",C); %stesse indicazioni di textscan
fclose(out);
fclose(report);
ringrazio ancora anticipatamente chiunque abbia consigli e suggerimenti