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

Verarbeitung von fast 11000 Dateien und Kartenerstellung

 

Graciella_1980
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 17.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2008, 20:12     Titel: Verarbeitung von fast 11000 Dateien und Kartenerstellung
  Antworten mit Zitat      
Hallo !

Vielleicht kann mir jemand helfen.
Ich versuche schon länger folgendes Problem zu lösen und komme einfach nicht voran.

Ich habe über einen Zeitraum von 30 Jahren pro Tag eine Datei mit folgendem Format:

- 972 Zeilen, wobei die ersten 971 Zeilen Zeichenketten enthalten mit ca. 2450 Zeichen,
in der letzten Zeile stehen Informationen, die ich nicht einlesen möchte.

- Beispiel: -9999-9999 12-9999 4 5 40 900-9999-9999

- Zunächst möchte ich die Dateien sortieren, d.h. alle Dateien die sich auf einen Monat beziehen,
sollen in einen Ordner Januar, usw. geschrieben werden. Die Dateien beinhalten in ihrem Namen das Jahr,
den Monat und den Tag, z.B. TM19610115.

- Dann möchte ich eine solche Datei aus einem der Monatsordner öffnen, jede Zeile lesen und in einzelne
Zeichen zerlegen, d.h. alle Zeichen die in einem Feld der Breite 4 liegen, sollen separat erfasst werden.

Für das obige Beispiel würde sich dann folgende Zahlenfolge ergeben:
-9999, -9999, 12, -9999, 4, 5, 40, 900, -9999, -9999

Mein Ziel ist, aus der eingelesen Datei eine Matrix mit 611 Spalten und 971 Zeilen zu lesen.
Diese Matrix soll dann abgespeichert werden (am besten Matrix_NamegeoeffneteDatei).

Ansschließend soll die nächste Datei geöffnet werden, wieder eine 971x611 Matrix herausgelesen werden
und diese mit der zuvor erstellten Matrix addiert werden ( d.h. z.B. Matrix_neu (1,1) = Matrix_i (1,1) + Matrix_i-1 (1,1))

Wenn alle zu durchsuchenden Dateien verwendet wurden, müsste dann jeder Matrixwert der Summe der entsprechenden Matrixwerte
der durchsuchten Matrizen entsprechen. Dann soll eine mittlere Matrix erstellt werden, in dem die einzelen Werte in der
Matrix durch die Anzahl der verwendeten Dateien geteilt werden.

Anschließend kann ich jedem Wert in der Matrix geographische Koordinaten zuweisen und mit einem Matlab-Tool eine Datei
erstellen, die in der ersten Spalte die geographische Länge, in der zweiten Spalte die geographische Breite und in der
dritten Spalte den Wert aus der Matrix enthält.

Dann möchte ich basierend auf der Datei Rasterkarten erstellen. Wie das funktioniert, weiß ich überhaupt nicht.

Ehrlich gesagt scheitere ich schom beim Einlesen der Dateien. Ich habe mal getestet, ob ich über den Befehl load eine 971x611 Matrix
einlesen kann. Das funktioniert problemlos, wenn man vorher die 972. Zeile entfernt und immer nach der Feldbreite 4 einen
Separator einfügt. Das direkte Einlesen der Dateien ohne diese Vorarbeiten klappt bei mir nicht.


Über Ideen wie man diese Aufgabe lösen könnte, würde ich mich freuen.
Private Nachricht senden Benutzer-Profile anzeigen


Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 18.03.2008, 07:45     Titel:
  Antworten mit Zitat      
schau dir mal dlmread an. Dort kann man

a) Einen Teil der Kopfzeilen weglassen -> für dich nicht interessant

b) Ein "Rechteck" aus der Datei auslesen. Ich glaube (schau aber nochmal nach, das Format dafür ist [Spalte_links oben Zeile_links oben, Spalte rechts_unten Zeile rechts_unten], dazu kann man auch noch das Trennzeichen angeben. also

Code:

datei = dir *.txt
data = dlmread(datei(ii).name, ' '  [0 0 971 10])
 


urks ... habe gerade gesehen, dass die Zahlen bei dir nicht durch Leerzeichen gertrennt sind, sondern direkt -9999-9999 drin stehen. Das wird schwierig. Dann musst Du die DAtei Zeilenweise einlesen und jeweils die strings zerhacken.

_oder_ (die von mir favorisierte Lösung)
suche dir ein Programm, mit dem du suchen&ersetzen in allen Dateien durchführen kannst

a) Linux sed/awk oder perl oder...
b) windows ultraedit zB (totalcmd auch) bietet suchen und ersetzen in unterordnern an...

und bringe die Datei erstmal in ein vernünftiges Format, zumindest alle "-" in " -" (Minus -> Leerzueichen Minus) dabei könntest Du auch noch die letzte Zeile weghauen und dann die DAteien einfach mit load einlesen...
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
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.