WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Einlesen Matlab - komplexe Struktur

 

Jakob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2008, 15:11     Titel: Einlesen Matlab - komplexe Struktur
  Antworten mit Zitat      
Hallo,
ich möchte ein großes (ca. 600000 zeilen) txt file einlesen, das immer 3 zeilen header hat, aus dem ich die lat-long info rausnehmen will; der schaut so aus:

East: 18 deg 55 min, North: 48 deg 55 min

darunter kommt immer ein block mit zahlen, die ich ganz normal in ein cell array einlesen will
bsp.:
1800 52 15 25 19 128 98 58 57 82 64 88 44
1801 29 36 58 45 83 82 84 35 122 48 97 75
1802 37 46 32 34 75 47 77 46 24 38 113 48
1803 42 32 52 36 93 93 108 56 42 55 77 74
1804 47 33 35 71 66 72 124 76 58 76 64 55
1805 30 49 19 37 127 133 56 101 90 92 19 33
1806 63 70 77 30 46 27 50 132 139 23 46 28
1807 28 54 33 35 49 66 41 80 50 103 109 102
1808 36 13 10 42 43 77 37 49 134 60 39 51
1809 56 24 20 71 56 31 79 101 138 50 65 121
1810 22 27 65 34 107 25 112 74 53 26 129 91
1811 51 36 26 63 67 66 43 55 43 34 9 22
1812 44 28 84 57 83 82 120 86 46 103 111 72
1813 24 13 37 41 124 121 125 78 119 122 78 83
1814 90 15 52 50 50 160 48 128 85 60 56 109
1815 62 20 83 31 63 174 99 112 24 27 40 81
1816 55 37 33 36 126 112 117 59 100 88 82 48

danach kommt wieder ein header usw.
was ist das beste zum einlesen?
textread und load geht nicht, weil unterschiedliche spaltenanzahl innerhalb des dokuments
textscan wäre vielleicht gut; da kapier ich aber einfach nicht, wie ich den text-header immer überspringen kann.
kann mir da jemand helfen?
danke
j.
ich hänge noch eine kurze testdatei dran.

testfuerforum.txt
 Beschreibung:
ein kurzer testfile

Download
 Dateiname:  testfuerforum.txt
 Dateigröße:  47.59 KB
 Heruntergeladen:  770 mal


Lim

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2008, 21:52     Titel: Re: Einlesen Matlab - komplexe Struktur
  Antworten mit Zitat      
Jakob hat Folgendes geschrieben:
Hallo,
ich möchte ein großes (ca. 600000 zeilen) txt file einlesen, das immer 3 zeilen header hat, aus dem ich die lat-long info rausnehmen will; der schaut so aus:

East: 18 deg 55 min, North: 48 deg 55 min

darunter kommt immer ein block mit zahlen, die ich ganz normal in ein cell array einlesen will
bsp.:
1800 52 15 25 19 128 98 58 57 82 64 88 44
1801 29 36 58 45 83 82 84 35 122 48 97 75
[..]

danach kommt wieder ein header usw.
was ist das beste zum einlesen?
textread und load geht nicht, weil unterschiedliche spaltenanzahl innerhalb des dokuments
textscan wäre vielleicht gut; da kapier ich aber einfach nicht, wie ich den text-header immer überspringen kann.
kann mir da jemand helfen?
danke
j.
ich hänge noch eine kurze testdatei dran.


Hi Jakob,

textscan würde schon funktionieren - es liest immer soweit, wie es mit dem angegeben format string kommt. Du müsstest also mit einem für den Header geeigneten format string anfangen, dann einen für den Zahlenblock nehmen usw. bis Du das Ende der Datei erreicht hast. Ggf. musst Du per fgetl einzelne Zeilen zwischendurch überspringen.

Eine Alternative: Im Matlab File Exchange gibt es eine Import-Funktion 'txt2mat' zum Herunterladen, die die Möglichkeit eingebaut hat, Strings vorm Import zu ersetzen. Das kann man nutzen, um die "Nicht-Zahlen" rauszuwerfen; bei Deiner Datei ginge das mit etwas Frickelei sogar so, dass man die Zeichenzahl nicht ändert und in jeder Zeile die gleiche Anzahl Zahlen hat (bis auf die leeren Zeilen natürlich):

Code:

A = txt2mat('testfuerforum.txt', ...
            'ReplaceExpr', ...
            {{'East:','NaN  '}, ...
            {', North: ','         '}, ...
            {'min','deg','0 0'}}, ...
            'ReadMode','block');

LocationRows = find(isnan(A(:,1)));
       
LocationNumbers = A(LocationRows,2:3:11);
 


Damit hättest Du jedenfalls alle Zahlen in einer Matrix, wobei die Orts-Daten 'künstlich' in die Zeilen gesteckt wurden, die mit einem NaN beginnen. Im Beispiel habe ich die mal nach "LocationNumbers" extrahiert. Die große Matrix A müsstest Du dann entsprechend weiter nach eigenen Wünschen zerlegen.
Hoffe, Dir ist damit geholfen!
 
Jakob

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2008, 17:35     Titel:
  Antworten mit Zitat      
Vielen Dank,
Lim!!
hat super funktioniert und ist eine feine möglichkeit. werde das txt2mat weiterempfehlen!!
einen schönen tag noch,
j.
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.