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

Importdata bis Dateiende

 

heliport
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.11
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 08.08.2012, 21:19     Titel: Importdata bis Dateiende
  Antworten mit Zitat      
Hallo,
sitze gerade an einer Auswertung von Messdaten, welche sich in einem bestimmten Muster in einer txt-Datei wiederholen und habe Probleme mit der Verarbeitung bzw. dem importieren/auslesen der Daten. Der Dateiinhalt sieht beispielsweise so aus:

--------------------------------------------------------------------
Profildrücke
Thu 21/Jun/2012 11:53:15
Gesamttemperatur T0 = 99.00 °C
statischer Druck Anströmung poo = 100013.46 Pa
Anströmmachzahl Moo = 0.025 (berechnet mit p0_vorne)
Gesamtdruck p0 (vorne) = 100057.86 Pa

Wanddrücke
Thu 21/Jun/2012 11:53:15
Gesamttemperatur T0 = 99.00 °C
statischer Druck Anströmung poo = 100013.46 Pa
Anströmmachzahl Moo = 0.025 (berechnet mit p0_vorne)
Gesamtdruck p0 (vorne) = 100057.86 Pa
Gesamtdruck p0 (hinten) = 100121.16 Pa

# x c_p px Mx
1.0000 122.0000 -1.6046 99942.2157 0.0406
2.0000 127.0000 -2.0779 99921.1999 0.0442
3.0000 132.0000 -3.1310 99874.4422 0.0512
4.0000 137.0000 -0.8805 99974.3639 0.0345
5.0000 142.0000 -3.2365 99869.7590 0.0519
6.0000 147.0000 -3.3631 99864.1383 0.0526
7.0000 152.0000 -1.6945 99938.2246 0.0413
8.0000 157.0000 -2.6847 99894.2581 0.0484

Drücke cpm Sonde
1.0000 99940.9192
2.0000 100051.8398
3.0000 99970.8510

Bohrnr. cp_oben Druck_oben cp_unten Druck_unten Ma_oben Ma_unten x
1.0000 1.5255 100081.1882 -0.3574 99997.5896 0.0182 0.0293 -400.0000 -400.0000
2.0000 1.6053 100084.7280 -141.7000 93722.1420 0.0196 0.3071 -365.0000 -365.0000
3.0000 0.7993 100048.9445 0.3112 100027.2722 0.0113 0.0209 -335.0000 -335.0000
4.0000 0.5496 100037.8573 0.2916 100026.4030 0.0169 0.0212 -305.0000 -305.0000
-------------------------------------------------------------------------------

Für mich relevant sind die drei großen Datenblöcke, welche ich bisher immer mit dem Befehl "importdata" und der Angabe der zu überspringenden Zeilenanzahl eingelesen habe, einfach für jeden Datenblock eine andere Zeilenanzahl - macht drei Befehle in der Summe

Code:
importdata('filename','\t',AnzahlZeilen)


Das Problem ist nun, dass für jede Messung das Muster immer wieder an die Datei angehängt wurde, ich somit eine ganze Reihe von Blöcken erfassen muss. Gibt es nun eine Möglichkeit "importdata" bei entsprechender Hochzählung der Zeilenanzahlen solange in einer Schleife anzuwenden bis das Dateiende erreicht ist? Ich möchte eigentlich den müheseligen Import mit

Code:
fid = fopen(filename)
while ~feof(fid)
...
end

vermeiden.
Oder kann ich mir die Zeilenanzahl der gesamten Datei auslesen und somit meine Schleife definieren oder hat jemand eine elegantere Lösung. Very Happy

Gruß,
Dirk
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.08.2012, 16:24     Titel:
  Antworten mit Zitat      
Hallo,

ich würde TEXTSCAN statt IMPORTDATA verwenden.

Die Schleife wird dir nicht erspart bleiben, aber dann bist du nach einem TEXTSCAN-Befehl immerhin schon fast an der richtigen Stelle, um den nächsten Block einzulesen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heliport
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.11
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.08.2012, 19:36     Titel:
  Antworten mit Zitat      
Hi Harald,
vielen Dank, TEXTSCAN funktioniert super und der Code ist nun doch wirklich nicht so aufwendig wie zunächst gedacht. Muss die eingelesenen Werte natürlich noch verarbeiten, bevor sie wieder überschrieben werden.

Code:
fid = fopen(fullfile(pfad,datei));
while ~feof(fid)
    data1 = textscan(fid,repmat('%f', 1, 5),'delimiter','\t', 'headerlines', 16);
    cpmdata = textscan(fid,repmat('%f', 1, 3),'delimiter','\t', 'headerlines', 1);
    data2 = textscan(fid,repmat('%f', 1, 9),'delimiter','\t', 'headerlines', 1);
end
fclose(fid);



Habe da noch ein zweites Problem. Ich lese die zu bearbeitenden Dateien mit

Code:
[datei pfad] = uigetfile('*.txt','multiselect','on');
ein und erhalte bei Auswahl einer Datei für "datei" einen STRING und für mehrere den Typ CELL. Wenn ich die Dateien nun mit einer Schleife abarbeiten will so öffne ich CELL mit
Code:
datei{n} bzw. char(datei(n))
für den STRING funktiniert dies nicht bzw. ich lese dann nur den n-ten Buchstaben aus. Gibt es eine Befehlszeile mit der ich beide Formate abrufen kann oder muss ich das Problem -wie bisher- mit
Code:
und Format-Konvertierung umgehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.08.2012, 21:03     Titel:
  Antworten mit Zitat      
Hallo,

ich denke, dass die Abfrage mit ISCELL hier die einfachste Möglichkeit ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
heliport
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.02.11
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 09.08.2012, 21:19     Titel:
  Antworten mit Zitat      
Sehr gut, habe nun den FOPEN Befehl in die IF ISCELL Abfrage eingebunden, auch das Auslesen der Werte und die Mittelung funktioniert wie gewünscht.
Vielen Dank Harald, du hast mir -auch mit vielen anderen Kommentaren in andere Beiträgen- sehr weitergeholfen. Very Happy

Gruß,
Dirk
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 - 2025 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.