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
Acquisizione in matlab di dati da file di testo
-
MarioBelotti
0 2 - Messaggi: 11
- Iscritto il: 21 dic 2009, 11:45
-
MarioBelotti
0 2 - Messaggi: 11
- Iscritto il: 21 dic 2009, 11:45
0
voti
[2] Re: Acquisizione in matlab di dati da file di testo
Metto una faticosa soluzione come memento casomai qualcuno avesse il mio stesso problema
Se vi sembra fatto male o avete consigli dite pure
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

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)