|
|
Speichern von Matrizen im ASCII Format (als *.mat) |
|
TomNeu |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 14:26
Titel: Speichern von Matrizen im ASCII Format (als *.mat)
|
 |
Hallo Matlabber,
wie kann ich in Matlab am besten Vektoren bzw. Matrizen als ASCII im mat-Format abspeichern? Dabei handelt es sich um reguläre als auch um dünnbesetzte Matrizen.
Das funktioniert ganz gut:
Dieses funktioniert (bei dünnbesetzten Matrizen) nicht:
Welche Alternativen gibt es noch für das Abspeichern von Vektoren bzw. matrizen im mat-Format als ASCII?
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 17:39
Titel: Re: Speichern von Matrizen im ASCII Format (als *.mat)
|
 |
Hallo Tom,
Dies funktioniert "ganz gut"?!
Merkwürdig. "A(iDof, jDof)" ist ein Skalar, aber "fprintf('(%14e, %14e')" benötigt 2 Zahlen. Eigentlich sollte das also nicht funktionieren.
"MAT"-Files sind eigentlich als binäre Matlab-Files gedacht. Man kann natürlich alles mögliche in die Files schreiben. Aber gerade in Bezug auf Matlab impliziert "MAT" doch ein nicht-ASCII-File-Format.
Benötigst Du wirklich ein ASCII-Format für dünnbesetzte Arrays?
Gruß, Jan
|
|
|
TomNeu |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 18:29
Titel:
|
 |
Hallo Jan,
oops, Ich meinte natürlich:
Gibt es dazu Alternativen?
Ja, ASCII wäre mir wichtig! P.S. Danke für die schnelle Antwort
Gruß
Tom
|
|
|
TomNeu |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 19:08
Titel:
|
 |
Mit diesem Code
erhalte ich eine Matrix A.mat in ASCII. Lade ich diesen File jedoch über
wieder in's Matlab bekomme ich die Fehlermeldung:
??? Error using ==> load
Number of columns on line 2 of ASCII file D:\A.mat
must be the same as previous lines.
Dies ist nur der Fall bei nicht(!) dünnbesetzten Matrizen. Bei dünnbesetzten Matrizen bzw. bei Vektoren funktioniert's!!!
Beschreibung: |
Anbei die vollbesetzte Matrix A.mat: |
|
 Download |
Dateiname: |
A.mat.zip |
Dateigröße: |
5.19 KB |
Heruntergeladen: |
380 mal |
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.02.2011, 19:32
Titel:
|
 |
Hallo Tom,
Ich habe mal "A.mat" in "A.dat" umbenannt.
Hilft das schon? Was soll an der Alternative denn anders sein?
Gruß, Jan
|
|
|
TomNeu |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.02.2011, 19:21
Titel:
|
 |
Hmmh, das Problem bleibt das Gleiche. Für vollbesetzte Matrizen A (in meinem Fall eine nichtsymmetrische 48*48 Matrix) bekomme ich nach Laden des derart abgespeicherten Files über
erneut die Fehlermeldung:
??? Error using ==> load
Number of columns on line 2 of ASCII file D:\U_stat.dat
must be the same as previous lines.
Beschreibung: |
|
 Download |
Dateiname: |
A.zip |
Dateigröße: |
5.34 KB |
Heruntergeladen: |
372 mal |
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 17.02.2011, 03:31
Titel:
|
 |
Hallo Tom,
Wenn Du eine Datei mit LOAD laden möchtest, speichere sie mit SAVE. Wenn Du FPRINTF verwendest um das Format frei beeinflussen zu können, nutze FSCANF um die Daten wieder einzulesen.
Gruß, Jan
|
|
|
NeuTom |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.02.2011, 10:20
Titel:
|
 |
Hallo Jan,
super, danke für den Tipp!
Um die Sache perfekt zu machen, bräuchte ich eine Matrizenausgabe derart, daß nach jedem fünften Element ein Zeilenumbruch stattfindet, d.h. es sollen fünf Matrixelemente in jeder Zeile mit einer Zeichenlänge von 14 und sechs Nachkommastellen sein-also im Format '5E14.6' .
Das veränderte Kommando:
funktioniert leider nicht richtig.
Danke im voraus!
Tom
|
|
|
TomNeu |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.02.2011, 17:43
Titel:
|
 |
Könnte ich z.B. auch über das Kommando:
zum gewünschten Ergebnis kommen? Aber wo bringe ich noch den CR (Carriage Return) nach jedem 5.ten Matrixelement unter und wie berücksichtige ich das Format 14.6? Die sechs Nachkommastellen sind ja bereits mit obigem Befehl abgedeckt.
Gruß&Danke im voraus!
Tom
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 24.02.2011, 17:51
Titel:
|
 |
|
|
|
|
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.
|
|