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

Textfile auslesen

 

Falko
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 10.06.2008, 10:01     Titel: Textfile auslesen
  Antworten mit Zitat      
Hallo,
mich beschäftigt folgendes Problem: Wie kann ich aus einer .cmd-Datei mit gemischten Inhalt (Zahlen und Wörter) die benötigten Zahlen auslesen? Hier mal ein kurzer Ausschnitt aus der Datei:
Code:
defaults coordinate_system  &
   default_coordinate_system = .Projektname.ground
marker create  &
   marker_name = .Projektname.ground.MARKER_3  &
   adams_id = 3  &
   location = -300, -400, -500  &
   orientation = 0.0d, 0.0d, 0.0d
marker create  &
   marker_name = .Projektname.ground.MARKER_5  &
   adams_id = 5  &
   location = -200, 300 ,-600  &
   orientation = 0.0d, 0.0d, 0.0d


Im obigen Beispiel sind es die dreistelligen Zahlen, welche jeweils einer Variable zugeordnet werden sollen. Dabei ist natürlich auch das Vorzeichen mit abzufragen.
Ich hoffe, ihr könnt mir auch diesmal wieder weiterhelfen.
_________________

Grüße, Falko
Private Nachricht senden Benutzer-Profile anzeigen


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 10.06.2008, 10:42     Titel:
  Antworten mit Zitat      
bei so einem Fall kommst Du um den Befehl FGETL nicht drum herum.
Das heisst Du musst den File zeilenweise auslesen und jede Zeile durch SSCANF jagen. Als Beispiel nimmst Du gleich den Example den Du zum Befehl FGETL findest. Musst nur noch SSCANF in die WHILE-Schleife einbauen...


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Falko
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 10.06.2008, 11:20     Titel:
  Antworten mit Zitat      
@ outsider
...nur noch sscanf einbauen?!? Das ist wohl der schwierigste Teil.
Mit fgetl habe ich ja nun die ganze Datei zeilenweise eingelesen.
Ist es nicht besser, nach der Schleife mit sscanf anzufangen? Meine Werte sind ja nicht in jeder Zeile enthalten. Ich muss doch dann die Zeilen zum Auslesen addressieren, oder?
_________________

Grüße, Falko
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 10.06.2008, 11:50     Titel:
  Antworten mit Zitat      
Wenn Du zuerst den ganzen File einliest, dann kannst Du auf FGETL verzichten. Du liest den ganzen File als Text ein und benutzst dann REGEXP-Funktion. Sehr effizienter Weg, aber bevor man den Suchstring für REGEXP definiert vergeht ne Weile... Confused zumindest bei mir...

Zitat:
Meine Werte sind ja nicht in jeder Zeile enthalten.

eben! Du schaust ob zB in der eingelesenen Zeile ein bestimmer Schlüsselwort enthalten ist, zB Location oder Orientation. Falls ja - wird die Zeile ausgewertet und der Inhalt mit SSCANF ausgelesen. Falls nicht - wird die nächste Zeile ausgelesen.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Falko
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 10.06.2008, 11:58     Titel:
  Antworten mit Zitat      
Naja, da gibt es dann eine Vielzahl von Schlüsselwörtern.
Vielleicht sollte ich noch erwähnen, dass die Textdatei immer gleich groß ist und die selbe Struktur hat. Es ändern sich lediglich nur die Zahlenwerte. Daher dachte ich, mann kann für das Auslesen sowas wie eine Adresse definieren?!?
_________________

Grüße, Falko
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.06.2008, 13:17     Titel:
  Antworten mit Zitat      
Moin Falko,

wenn die Datei immer die gleiche Struktur und Inhalt hat, dann kennst du im Endeffekt doch auch die Zeilennummer, in welcher die Werte deines Interesses liegen. Diese kannst du dann ganz gezielt auslesen (Befehl dazu findest du hier im Forum, mir fällt er grad nicht ein).

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Falko
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 10.06.2008, 13:27     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:

wenn die Datei immer die gleiche Struktur und Inhalt hat, dann kennst du im Endeffekt doch auch die Zeilennummer, in welcher die Werte deines Interesses liegen. Diese kannst du dann ganz gezielt auslesen (Befehl dazu findest du hier im Forum, mir fällt er grad nicht ein).

Hallo Alex,
richtig, im Prinzip sind mir die Zeilennummern schon bekannt. Ich hatte schon folgendes probiert:
Code:
Zeile32=textscan(fid,'%s',1,'delimiter','\n','headerlines',31);

damit kann ich die ganze Zeile auslesen und ich bekomme folgenden String: 'location = -300, -400, -500 &'
Dann hatte ich versucht, per sscanf die Zahlen auszulesen, bin daran aber leider gescheitert. Crying or Very sad
_________________

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.04.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 10.06.2008, 14:18     Titel:
  Antworten mit Zitat      
So, nach etlichen Probieren bin ich auf eine einfache und funktionierende Lösung gekommen:
Code:
Zeile32=textscan(fid,'%*s %*s %s %s %s',1,'headerlines',31);
   
    Wert1=strrep(Zeile32{1},',','');
    Wert2=strrep(Zeile32{2},',','');
    Wert3=strrep(Zeile32{3},',','');
    disp([Wert1 Wert2 Wert3]);


Bin aber für bessere Vorschläge immer offen Wink
_________________

Grüße, Falko
Private Nachricht senden Benutzer-Profile anzeigen
 
Andfirst1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2009, 11:24     Titel:
  Antworten mit Zitat      
Hi

Ich habe folgendes Problem: Würde gerne eine Matrix der Größe zeilen = 997 spalten = 2277 aus einem Text File auslesen. Alle Werte haben das selbe Format.

In der Hilfe ist folgendes beispiel:

Code:
fid = fopen('exp.txt', 'r');
a = fscanf(fid, '%g %g', [2 inf])    % It has two rows now.
a = a';
fclose(fid)


Problem dabei ist, dass ich auf diese Art und Weise 2277 mal %g angeben müsste (oder ein anderes Format %f oder wie auch immer). Geht denn das dynamisch auch, dass ich das Format nur einmal für alle Einträge angebe?

mean.txt
 Beschreibung:

Download
 Dateiname:  mean.txt
 Dateigröße:  8.66 MB
 Heruntergeladen:  425 mal
 
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.