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

Bestimmte Datenblöcke einer Datei einlesen

 

timosch
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 09.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.06.2017, 12:44     Titel: Bestimmte Datenblöcke einer Datei einlesen
  Antworten mit Zitat      
Hallo alle zusammen Smile,

ich bin ziemlich neu, was den Umgang mit Matlab betrifft und versuche aus verschiedenen Dateien (.lila oder auch .txt), verschiedene Datenblöcke rauszuziehen.
Die Dateien sind alle mehr oder weniger identisch und bestehen aus 2 Spalten (mit ; getrennt). Sie besitzen alle einen 17-zeiligen Header und anschließend folgt in Spalte 1 eine Datumsreihe (stündliche Darstellung) mit einem dazugehörigen Messwert in Spalte 2. Dieses Schema wiederholt sich in ungleichmäßigen Abständen durch die gesamte File, wodurch ich mit dem Befehl HeaderLines wahrscheinlich nicht weit komme, da sich dieser nur auf den Beginn der Datei bezieht, richtig?

Hier das Schema:

Station;X1
Stationsnummer;1
Stationskennung;M
Betreiber;D1
Datenart;TTAU
Datentyp;P
Datenursprung;mes
Datenbezug;Station
Dimension;Grad C
Zeitintervall;01:00
Zeitzone;UTC+1
X-Koordinate;4385224
Y-Koordinate;5604764
Koordinatensystem;31468
Hoehe;450
Hohensystem;m ue NN
Kommentar;jweuiwe
01.01.1997 00:00;-100
01.01.1997 01:00;-1
01.01.1997 02:00;-1
01.01.1997 03:00;-1
01.01.1997 04:00;-1
01.01.1997 05:00;-1
01.01.1997 06:00;-3
01.01.1997 07:00;-1
01.01.1997 08:00;-1
01.01.1997 09:00;-1
01.01.1997 10:00;-1
01.01.1997 11:00;-4
...
Station;y1
Stationsnummer;2
Stationskennung;s
Betreiber;cc
Datenart;TTAU
Datentyp;P
Datenursprung;mes
Datenbezug;Station
Dimension;g
Zeitintervall;01:00
Zeitzone;UTC+1
X-Koordinate;bla
Y-Koordinate;bla
Koordinatensystem;3
Hoehe;0
Hohensystem;m ue NN
Kommentar;aaaa
01.01.1997 00:00;-1
01.01.1997 01:00;-1
01.01.1997 02:00;-1
01.01.1997 03:00;-1
...

Das Schema wiederholt sich bis zu 100 mal in einer File. Die Messreihe ist hier nur beispielhaft auf einige wenige Werte beschränkt, um es übersichtlich zu halten, in der Realität zieht sich die Messreihe über mehrere Jahre hinweg und variiert von Station, das heißt manche Stationen haben fehlende Zeiten und Messwerte und daher unterschiedliche Zeilenanzahlen.
Mein Ziel ist es nun für jede Station jeweils ein Array oder Cell-Array zu erhalten, welches nur die stündliche Datumsreihe mit zugehörigem Messwert enthält.
Ich wollte dementsprechend die 17 Zeilen Header löschen dann die Messwerte in ein (Cell)Array einlesen und das gleiche Spiele wieder für die nächsten 17 Zeilen Header.

Natürlich habe ich die Suche verwendet und auch viel in englischen Foren recherchiert aber ich bin bisher nicht so richtig zu einem Ergebnis gekommen.

Mein Vorgehen bisher:
Code:
FID=fopen('teststation.lila','r')
C=textscan(FID,'%s %s','delimiter',';')
C2=[C{:}]

g=0

for i=1:length(C2)
    if strcmp(C2{i,1},'Station')
        g=g+1
        Cneu{g,1}=i
    end
end
lCneu=length(Cneu)
Data={}
for t=1:lCneu
    for i=Cneu{t,1}+17:Cneu{t+1,1}-1
    Data{i-17,1}=C2{i,1}
    end
end


Es liest zunächst auch in Data die Zeitreihe zwischen den jeweiligen Stationen ein allerdings kommt dann am Ende Index exceeds matrix dimensions und verweist auf
die Zeile for i=Cneu{t,1}+17:Cneu{t+1,1}-1
Ich weiß, dass das sicher kein eleganter Ansatz ist Smile daher bitte ich um Hilfe, als Optionen hatte ich noch mit dem Befehl while ~feof(FID) und t = fgetl(FID) herumprobiert, da ich diese Befehle in sämtlichen Foren gefunden habe. Allerdings komme ich dort nicht gerade weit, da ich das Grundprinzip dahinter nicht ganz verstehe. Und als dritten Ansatz habe ich mir sonst überlegt mit fprint für jede Station eine .txt file zu erstellen und dann jede Station erneut als Cell-Array mit textscan einzulesen, da ich am Ende die Zeitreihen jeder Station mit einer Referenzzeitreihe (mit Datetime bereits erstell) auf fehlende Zeiten und Werte kontrollieren will.

Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken und Ihr könnt mir helfen Smile

Liebe Grüße
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.