Acquisizione in matlab di dati da file di testo

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto UtenteMarioBelotti
0 2
Messaggi: 11
Iscritto il: 21 dic 2009, 11:45
0
voti

[1] Acquisizione in matlab di dati da file di testo

Messaggioda Foto UtenteMarioBelotti » 27 ago 2010, 11:21

Ciao a tutti.
Ho un problema con lo sviluppo del codice di matlab.Sto acquisendo dei dati da un formato particolare di testo.fortunatamente matlab lo prende come file di testo.
Grossomodo sono riuscito a fare il codice escluso questo pezzo che non riesco a imbastire il codice per prendere i dati in quanto un po' disordinato (sotto l'esempio).
La logica che il programma dovrebbe avere è:
salto le prime 3 righe
leggo la quarta
salto la quinta riga
dalla sesta riga in poi ci sono i dati nelle stanghette
NOTA: ogni srtinga della quarta riga contenuta tra i due || è il nome del vettore da riempire con i dati nelle righe successive
es chiarificatore (spero):
codserv=[N N N N N N ecc....]
area=[I I I I I I ecc....]
tmax=[125.4 19 19]


V|0|0|0|t|0|1|1|4|11|T4|H13||||||
P|40|0.01|10|1|1|0|40|1|1|1||1|*||0|0|0
*|A1|A1|A7|A16|F|F|F|F|F|F|||||||
*|codserv|area|codice|nome|tnom|tmin|tmax|PC|qc|susc|||||||
*|||||kV|kV|kV|MW|MVAR|S|||||||
N|I|1|N01|N01|132|125.4|138.6|0|0||||||||
N|I|1|N02|N02|20|19|21|0|0||||||||
N|I|1|N03|N03|20|19|21|1.013532234|0.49087611||||||||
N|I|1|N04|N04|20|19|21|0.390791617|0.189269056||||||||
N|I|1|N05|N05|20|19|21|0.180634542|0.121387171||||||||
N|I|1|N06|N06|20|19|21|0.709472564|0.343613323||||||||
N|I|1|N07|N07|20|19|21|0.103495727|0.069549543||||||||
N|I|1|N08|N08|20|19|21|0.351712456|0.170342158||||||||
N|I|1|N09|N09|20|19|21|0.097697904|0.06565339||||||||
N|I|1|N10|N10|20|19|21|0.162165157|0.078540184||||||||

Ho provato a leggere bene i file help e guide di matlab ma non son riuscito a trovare esempi simili per questo chiedo la mano di qualcuno che conosce il modo per farlo.

clc;
clear all;
f1=fopen(nomefile,'r');
v = fscanf(f1,'%f',inf);
fclose(f1); % cosi leggo il file esempio guisto?

Ringrazio tutti anticipatamente ogni suggerimento link utile o aiuto è ben accetto.
Buona Giornata

Avatar utente
Foto UtenteMarioBelotti
0 2
Messaggi: 11
Iscritto il: 21 dic 2009, 11:45
0
voti

[2] Re: Acquisizione in matlab di dati da file di testo

Messaggioda Foto UtenteMarioBelotti » 29 ago 2010, 18:27

Metto una faticosa soluzione come memento casomai qualcuno avesse il mio stesso problema

Codice: Seleziona tutto

%--------------I tronco di dati--------------------------------------------
function readtest()
clc
clear all
%Apri il file che vuoi importare in matlab (.sip IN di Sipario program OPF)
fid = fopen('test.txt');   
%salta le prime 3a linee salva la 4a salta la quinta 
for i = 1:4
    nome = fgetl(fid);
end
fgetl(fid);
% Separa in uscita i nomi per poi essere riempiti con i valori
nome = textscan(nome,'%s','delimiter','|');
% Leggi i valori dal file .sip
data = textscan(fid,'%s %s %d %s %s %d %d %f %f %f %[| ]','delimiter','|');
fclose(fid);
for i = 1:size(data,2)-1
    values = ( data{i}(1:end));
    if(iscell(values))
        values = cell2mat(values);
    end
    namenew = nome{1}{i+1};
    % error checking - poco utile -
    if(~strcmp(namenew, ''))
        %Salva il valore o la stringa nella calling work space
        assignin('caller', namenew, values)
    end
end
%--------------fine I tronco di dati------------------------------------


Se vi sembra fatto male o avete consigli dite pure


Torna a “Programmi applicativi: simulatori, CAD ed altro”