Gå til innhold

Anbefalte innlegg

Hei.

 

Til masteroppgaven min har jeg en hel del data (noen tusen filer) som skal normaliseres.

For å slippe å åpne hver eneste fil i textpad og importere til exel (noe som vil ta år og dag)tenkte jeg å prøve å lage et program i matlab som importerer alle filene samt henter ut de dataene jeg trenger.

 

Problemet er at jeg ikke er veldig dreven i hverken matlab eller programmering generellt, men har brukt det noe tidligere.

 

Første problem jeg har støtt på er å importere filene og hente ut ønskede data.

 

Filene inneholder 21 linjer med tekst først, så noen hundre/tusen linjer med data, for å så følges av noen linjer tekst på bunnen.

 

Det er kun dataene jeg er interessert i.

 

Et annet problem er at de forskjellige filene ikke nødvendigvis inneholder like mange linjer med data, de varierer.

 

Noen som har noen hint?

 

På forhånd takk :yes:

 

Legger også ved et eksempel på en av filene jeg skal bruke (egentlig filendelse er *.mwd, men det får jeg ikke lastet opp her)

test.txt

Lenke til kommentar
Videoannonse
Annonse

Ser ikke for meg at matlab er det som er mest egnet til dette. Ville kanskje sett på python istede. Matlab er veldig egnet for matematiske operasjoner, spesielt vektorevaluerte funksjoner, men IO, løkker osv. er ikke den sterkeste siden til Matlab. Hvis du likevel vil bruke matlab, se: http://www.mathworks.com/support/tech-notes/1400/1403.html

 

For python ville jeg lest en og en linje til jeg leste linjen [MWD DATA].

 

Deretter lese en linje, og lese datane frem til du kommer til [EXTRA INFO]. Kan til og med hende python har egne biblioteker for å lese MWD filer, samt for å skrive excel filer.

Lenke til kommentar

matlab knuser denne oppgaven lett.

 

du er kjent med fopen() ?

 

ja tror nok matlab skal være helt kurrant til denne oppgaven.

jeg er kjent med fopen ja, men det er jo kun for å åpne filen(?), og det går greit, problemet er det å velge ut de riktige dataene. hvordan funker textscan() til dette? har forsøkt litt men får det ikke helt til å funke. sikkert bare noen små detaljer.

 

takk for svar, men kom gjerne med mer inputt :!:

Lenke til kommentar

Så langt har jeg kommet hit:

 

 

r=0;

x=0;

 

% Open Data File

fid = fopen('test.mwd','r');

 

while(x~=(-1))%whileløkke som finner antall linjer med data i Mwd-filene

x=fgetl(fid);

r=r+1;

end

r = r-1;

a=r-30;

 

disp(['Number of rows = ' num2str(a)])

 

 

name = textscan(fid,'\n', -1, 'delimiter', ' ', 'headerlines', 22); % Filter out string at beginning of line

 

 

fclose(fid);

 

 

disp(' ')

disp('Strings read in successfully:')

disp('Her vil jeg skrive ut tallene som står i første linje' names)

 

 

 

Her får jeg skrevet ut antall linjer med data. Om jeg har names i siste "disp" får jeg også ut de riktige dataene i første linje. men det krøller seg... skulle gjerne hatt en liste (tall-array, til å begynne med) istedentfor cell-array. Hvordan gjør jeg dette?

 

Prøvd å søke på Matlab central og brukt help funksjonen, men tar enormt mye tid...

Lenke til kommentar

Så langt har jeg kommet hit:

 

 

scanf er kanskje greiest her. Dette burde gjøre jobben. Kall den med arr=read_test(22,'test.txt'); arr vil deretter inneholde alle verdiene:

 

 

function arr=read_test(nlines,filename)

   fd=fopen(filename,'r');

   % skip first nlines
   for row = 1:nlines
       textline = fgets(fd);
   end

   arr= fscanf(fd,'%d %g %g %g %g %g %g %g %g %2d:%2d:%2d', [12 inf])';

   fclose(fd);

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...