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

*.dat Datei einlesen

 

derwolf1509

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2011, 15:01     Titel: *.dat Datei einlesen
  Antworten mit Zitat      
Hallo Zusammen,

ich habe eine wahrs. kleines Problem, bei dem ich Eure Hilfe brauche.

Ich möchte die Angehängte xxx.dat Datei einlesen und Werte aus bestimmten Zeilen auslesen.
Hier ein kleiner Auszug aus der Datei:
#BEGINCHANNELHEADER
200,a_längs
201,ch(Ea$)-R10
210,EXPLICIT
211,kick000051.R64
213,CHANNEL
214,REAL64
220,771
221,1
240,0
241,1
250,-1.02874524097814
251,8.13824306275043
252,No
253,not monotone
260,Numeric
261,1
262,0
263,0
265,0
#ENDCHANNELHEADER

Mein Code sieht bisher wie folgt aus.

Code:

fidDAT=fopen('xxx.dat','r+');
line=1;
tline=1;
while tline~=-1
    tline=fgetl(fidDAT);  
    disp(tline)
    zeilen{line,1}=tline;
    line=line+1;
end
fclose(fidDAT)
 


Jetzt möchte ich die Werte hinter den Zeilen die mit "200," anfangen auslesen.
Jemand eine Idee. Mit strcmp habe ich es schon versucht bin aber nicht weiter gekommen.

Gruß[/code]


derwolf1509

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2011, 15:04     Titel:
  Antworten mit Zitat      
Sorry Datei vergessen:

Die Datei ist als txt gespeichert. Dat-Dateien sind im Forum verboten. Also einfach umbenennen.

xxx.txt
 Beschreibung:

Download
 Dateiname:  xxx.txt
 Dateigröße:  33.35 KB
 Heruntergeladen:  734 mal
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 18.02.2011, 16:13     Titel:
  Antworten mit Zitat      
Hallo derwolf1509,
Code:

regexp(tline, '(?<=^(200,))\w*', 'match', 'once')
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.02.2011, 17:18     Titel: Re: *.dat Datei einlesen
  Antworten mit Zitat      
Hallo derwolf1509,

Es geht mit STRNCMP. Ich würde auf jeden Fall noch pre-allocieren, wobei eine zu große Wahl der Zeilenzahl nicht tragisch ist, aber auf jeden Fall besser als eine zu kleine.

Code:
fidDAT = fopen('xxx.dat', 'r');  % Wieso 'r+' ?
iline = 0;
tline = 1;
zeilen = cell(10000, 1);  % Lieber zu groß als zu klein
while tline ~= -1
    iline = iline+1;
    zeilen{iline} = fgetl(fidDAT);
end
fclose(fidDAT);
zeilen = zeilen(1:iline);
Index200 = find(strncmp(zeilen, '200,', 4));
ZeilenAfter200 = zeilen(Index200 + 1:iline);

Zudem habe ich noch "line" zu "iline" umbenannt, weil LINE ein Matlab-Kommando ist und die Namensnutzung zu Verwirrung führen kann.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
derwolf1509

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.02.2011, 10:17     Titel:
  Antworten mit Zitat      
Hi Jan,

danke für die Antwort. Leider funktioniert das Script bei mir nicht!
Der Index200 ist bei mir immer leer.

Hat das Script bei dir Funktioniert?

Gruß
 
derwolf1509

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.02.2011, 14:57     Titel:
  Antworten mit Zitat      
Hab die Lösung noch gefunden. Ich musste einfach die CHAR erst in Double umrechnen. Leerstellen entfernen und dann wieder in ein CHAR umwandeln. Dann konnte ich mit strncmp die Zeilen Suchen.

Danke nochmals.
 
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.