|
|
String von Txt-File einlesen und in double-Werte umwandeln |
|
jm |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.12.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.12.2018, 11:37
Titel: String von Txt-File einlesen und in double-Werte umwandeln
|
|
Hallo,
ich bin noch Anfänger und komme nicht weiter
mein Problem:
ich lese von einer Textdatei mit fgetl eine Datenzeile mit 4 Werten (Spaltentrenner = Tab) in den String tline ein.
tline =
0.0007731 1 0 0 0.04
mit strsplit bekomme ich dann eine String-Matrix Zeile
Zeile = strsplit(tline, '\t');
Zeile=
'0.0007731' '1' '0' '0' '0.04'
jetzt möchte ich diese String-Matrix in 4 double-Wert z.B. in a, b, c, d umwandelm !
mit dem Befehl a = str2double(Zeile{1}); bekomme ich auch den richtigen double-Wert ohne Fehlermeldung
bei str2double(Zeile{2}); str2double(Zeile{3}); str2double(Zeile{4});
bekomme ich auch die richtigen Werte aber die Fehlermeldung:
Index exceeds Matrix Dimension
b = str2double(Zeile{2});
was mach ich da falsch
vielen Dank im Voraus
Josef
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.12.2018, 13:02
Titel:
|
|
Hallo,
ich vermute mal, dass du letztlich mehr als die 4 Werte einlesen willst? Dann gibt es Befehle, die sich besser eignen, z.B.
dlmread
,
readtable
oder
textscan
.
Falls du bei dem Ansatz bleiben willst: Die Fehlermeldung verwundert mich.
Welchen Datentyp und welche Dimensionen hat die Variable Zeile?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
jm |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.12.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.12.2018, 13:36
Titel:
|
|
Welchen Datentyp und welche Dimensionen hat die Variable Zeile?
Im Workspace steht 1x4 cell , muss die Variable Zeile extra deklariert werden ?
Gruß
Josef
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.12.2018, 14:46
Titel:
|
|
Hallo,
nein, daran sollte es nicht liegen.
Bei einer 1x4-Cell sollte der Zugriff so an sich funktionieren.
Kannst du ein reproduzierbares Beispiel posten?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
jm |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.12.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.12.2018, 18:58
Titel:
|
|
Beispiel:
Ergebnis:
Name Size Bytes Class Attributes
Zeile 1x4 474 cell
Index exceeds matrix dimensions.
Error in Test (line 13)
b = str2double(Zeile{2});
[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.12.2018, 20:04
Titel:
|
|
Hallo,
um das reproduzieren zu können, bräuchte man die Daten.
Ein Problem könnte sein, wenn nicht alle Zeilen 4 Werte enthalten. Dann müsste die Variable aber auch entsprechend kürzer sein.
Momentan werden a-d ständig überschrieben. Ist das beabsichtigt?
Das Einlesen kompletter Dateien geht generell mit den anfangs genannten Befehlen einfacher.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
jm |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.12.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.12.2018, 20:36
Titel:
|
|
Hallo,
im Anhang die Daten-Datei mit Endung txt !
Das a-d ständig überschrieben wird ist Absicht, ich muss die Zeilen der Datei einzeln einlesen und verarbeiten.
Gruß
Josef
Beschreibung: |
|
Download |
Dateiname: |
Daten.txt |
Dateigröße: |
110 Bytes |
Heruntergeladen: |
485 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.12.2018, 20:48
Titel:
|
|
Hallo,
bei mir kommt die Fehlermeldung nicht.
Du kannst die Daten auch einzeln verarbeiten, z.B. in einer for-Schleife, wenn du sie wie vorgeschlagen eingelesen hast.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
jm |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.12.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.12.2018, 20:58
Titel:
|
|
Hallo Harald,
vielen Dank für die Info,
ich habe noch eine Frage: kann Matlab ein Feld mit der Größe 120000 x 14 Werte
einlesen und verarbeiten ?
Gruß
Josef
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 30.12.2018, 23:18
Titel:
|
|
Hallo,
ja.
MATLAB hat mit Daten kein Problem, solange sie in den Speicher passen. Selbst wenn sie nicht in den Speicher passen würden, gäbe es noch Möglichkeiten.
Da Double 8 Bytes hat:
120000*14*8 = 13.44e6, das sind also gerade mal 13,44 MB.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
jm |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 30.12.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.12.2018, 08:00
Titel:
|
|
Danke für die Info,
habe den Fehler über DEBUG gefunden,
Datei endet mit 2 x CRLF, das heißt, nach dem 1. CRLF wird nochmal eine
Zeile eingelesen:
Wert a = CRLF = NaN
Wert b = Fehler, weil kein Wert vorhanden ist.
Gruß
Josef
|
|
|
|
|
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 - 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.
|
|