Matlab: Matrix in Datei schreiben

Neue Frage »

ein gast Auf diesen Beitrag antworten »
Matlab: Matrix in Datei schreiben
Hi Leute,
ich habe nochmal eine Frage, wie man in Matlab eine Matrix (zusammen mit Text) in eine Datei schreiben kann. Der Text ist nicht das Problem, ich verwende fprintf, aber die Matrix hat folgende Form:
M=[A,B,C];
wobei A,B,C Spaltenvektoren sind. Nun fällt mir keine vernünftige Formatierung ein, so dass A B C (als Spalten) in die Datei geschrieben werden. Wenn ich
fprintf(fid,'%f %f %f\n',M);
nehme, dann schreibt er erst einen Vektor in eine Zeile, dann den nächsten...
Hat von Euch vielleicht jemand eine Idee?
Herzlichen Dank,
ein gast
Airblader Auf diesen Beitrag antworten »

Was meinst du mit "zusammen mit Text"? Eine nette Funktionalität ist matfile, das unterstützt das Speichern von beliebigen und beliebig vielen Variablen und unterstützt sogar Sparse-Strukturen. Deine drei Vektoren kannst du da einfach einzeln ablegen.

Der einzige Nachteil ist, dass es nicht wie csv-Dateien o.ä. gespeichert wird, andere Programme können es also nicht einfach lesen. Matlab hingegen kann die Dateien super-bequem auslesen.

air
ein gast Auf diesen Beitrag antworten »

Hi,
danke erstmal für die Antwort zu so früher Stunde ;-)
Ich brauche die Textdatei weniger zum Auslesen, sondern einfach zur Datenspeicherung für mich. Es wird eine größere Datei, in der sich auch die Beschreibungen der Variablen befinden usw., die bei Abarbeitung des Skripts erstellt und ergänzt wird. Mit den anderen Informationen habe ich kein Problem, nur die Formatierung der Matrizen versteht es nicht richtig. Im Prinzip tut es ja, was ich will, aber es schreibt die Daten nebeneinander und nicht als Spaltenvektoren...
Airblader Auf diesen Beitrag antworten »

Dann würde ich spontan dazu raten, csvwrite zu verwenden und als Delimiter eben einen Tab bzw. ein Leerzeichen zu verwenden.

Edit: Sollte das nicht gehen, weil du noch andere Sachen schreiben willst, so könntest du eventuell versuchen, den fprintf-Befehl in eine Schleife auszulagern und dann eben zeilenweise M auszugeben (beachte, dass das für große Matrizen extrem langsam wird):

code:
1:
2:
3:
for ii = 1:size(M, 1)
   fprintf(fid, '%f %f %f', M(ii, :));
end


Für andere Varianten müsste ich mich selber erst nochmal in der Dokumentation umschauen. Dir Befehle wie fprintf und save in der Online-Dokumentation anzuschauen würde ich dir allerdings auch empfehlen, da findet man meist nützliche Hinweise. smile

Edit #2: Hier machen die bei Mathworks genau das, was ich oben vorgeschlagen habe. Den Link findet man z. B. über die Hinweise bei csvwrite.

air
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »