|
|
Dezimalzahlen aus einer Textdatei entnehmen |
|
trust114 |
Forum-Fortgeschrittener
|
|
Beiträge: 80
|
|
|
|
Anmeldedatum: 10.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.11.2015, 20:10
Titel: Dezimalzahlen aus einer Textdatei entnehmen
|
|
Hallo Leute,
hab mal ne Frage zu Matlab. Hier erstmal mein code:
fid=fopen('file.txt' , 'r') %zum öffnen der Datei
Datei=fscanf(fid, '%c') % Wiedergabe der Datei
Die Datei hab ich mit im Anhang drin. Nun brauche ich alle Dezimalzahlen die sich in meiner Datei befinden. Die Variable Datei lässt mich jetzt allerdings nicht zeilenweise den Inhalt meiner Datei entnehmen, sondern nur stellenweise, daher auch die 2460 Stellen in meiner Datei. Nun suche ich einen Befehl der es mir ermöglicht alle Dezimalzahlen in dieser Datei zu entnehmen und eventuell in einer Matrix abzuspeichern. Habs auch schon mit dem Befehl
A=str2num(refexprep(Datei, '\D+', ' '));
probiert jedoch leider ohne Erfolg. Bin für jede Hilfe dankbar.
Beschreibung: |
|
Download |
Dateiname: |
mittel_system.txt |
Dateigröße: |
2.4 KB |
Heruntergeladen: |
636 mal |
|
|
|
|
|
Mmmartina |
Forum-Meister
|
|
Beiträge: 745
|
|
|
|
Anmeldedatum: 30.10.12
|
|
|
|
Wohnort: hier
|
|
|
|
Version: R2020a
|
|
|
|
|
|
Verfasst am: 16.11.2015, 08:39
Titel:
|
|
Wenn alle einzulesenden Files grundsätzlich so aussehen wie das Beispiel, würde ich wohl per fgetl die Zeilen einzeln einlesen und alle Leerzeilen und Zeilen, welche mit einem Kommentarzeichen beginnen gleich rauswerfen bzw. ignorieren.
Die übrigen Zeilen würde ich gleich getrennt in 3 Matritzen speichern.
Hierfür würde ich textscan nutzen. Mit %d die Laufende Nummer und mit %f jeweils die weiteren Ziffern.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
trust114 |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 80
|
|
|
|
Anmeldedatum: 10.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.11.2015, 09:30
Titel:
|
|
hi,
danke estmal für die Antwort.
Mit fgetl habe ich leider nur die erste Zeile wiedergeben können. Muss da eventuell noch eine Schleife hin? Wie genau kann man denn die Leerzeilen und die Kommentarzeilen ignorieren?
Könntest du bitte einen Programmcode schreiben, hab da leider voll die Probleme mit.
Schönen Gruß
trust114
|
|
|
Mmmartina |
Forum-Meister
|
|
Beiträge: 745
|
|
|
|
Anmeldedatum: 30.10.12
|
|
|
|
Wohnort: hier
|
|
|
|
Version: R2020a
|
|
|
|
|
|
Verfasst am: 16.11.2015, 09:44
Titel:
|
|
Hab mich verschrieben, versuch
Und ansonsten hilft die Matlabhilfe -> einfach oben klicken., lesen, weitersuchen.
Weitere Fragen von dir erstellten Code zu exakten Fehlerbeschreibungen.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
trust114 |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 80
|
|
|
|
Anmeldedatum: 10.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.11.2015, 11:46
Titel:
|
|
Nun gibt mir Matlab alle meine Zahlen in inLine und alle meine Dezimalzahlen in inNum wieder. Alle Zahlen in inNum würde ich gerne in einer Variablen M abspeichern, aber ich weiß nicht wie.
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 16.11.2015, 11:47
Titel: Re: Dezimalzahlen aus einer Textdatei entnehmen
|
|
Hallo trust114,
Die Datei hat einen komplexen inneren Aufbau. Du suchst nach "allen Dezimalzahlen". Aber wie steht es mit diesen Zeilen:
Möchtest Du nun [1.0, 0.3] bekommen? Alle Dezimalzahlen schließt die "1." ja mit ein.
Ich vermute, Du möchtest nur bestimmte Zeilen einlesen. Diese lassen sich nicht direkt in eine Matrix packen, weil die "0.3" ja z.B. nur eine Spalte hat, die anderen daten aber mit 3 Spalten vorliegen.
Zudem denke ich, dass die Zeilen "DATENBLOCK: MESSPUNKTE" usw. sehr wichtig sind und nicht einfach ignoriert werden können.
Du brauchst also eine viel komplexere Methode, um die Daten zuverlässig einzulesen als nur "alle Dezimalzahlen". Eine Lösung dafür könnte etwa 100 Zeilen benötigen. Aber für die Programmierung muss man zunächst eindeutig klären, wie das File-Format definiert ist.
Gruß, Jan
|
|
|
trust114 |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 80
|
|
|
|
Anmeldedatum: 10.11.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 16.11.2015, 12:02
Titel:
|
|
Hi Jan S,
ja du hast Recht. Ich hätte besser schreiben sollen das ich alle Dezimalzahlen suche die sieben Nachkommastellen haben.
Ist es denn nicht möglich zwei Matrizen zu bilden?
D. h. eine nx2 Matrix für die Koordinaten und eine nx3 Matrix für die Messpunkte?
Schönen Gruß
PS: Es muss auch nicht unbedingt eine Matrix sein. Ich dachte nur es wäre am effektivsten.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|