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:
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.
_________________
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...
@ 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?
_________________
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... 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.
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?!?
_________________
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).
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:
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.
_________________
Bin aber für bessere Vorschläge immer offen
_________________
Grüße, Falko
Andfirst1
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.08.2009, 11:24
Titel:
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', [2inf])% 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?
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
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.