2009-05-29 9 views
3

Ich möchte eine Matrix in eine Textdatei speichern, damit ich sie von einem anderen Programm lesen kann. Im Moment benutze ich:Wie speichern Sie Daten in einer Textdatei in einem bestimmten Format?

save('output.txt', 'A','-ascii'); 

Aber das spart meine Datei als

6.7206983e+000 2.5896414e-001 
6.5710723e+000 4.9800797e-00 
6.3466334e+000 6.9721116e-001 
5.9975062e+000 1.3346614e+000 
6.0224439e+000 1.8127490e+000 
6.3466334e+000 2.0517928e+000 
6.3965087e+000 1.9721116e+000 

Aber ich möchte haben sie ohne die „e-Notation“ gespeichert und nicht mit allen Ziffern. Gibt es einen einfachen Weg, dies zu tun?

Bearbeiten: Vielen Dank! Das funktioniert gut. Entschuldigung, aber ich denke, dass ich deine Bearbeitung durch Verwendung des Rollbacks vermasselt habe.

+0

Kein Problem, die Formatierung sieht immer noch gut aus ... und Sie haben sich ein "Cleanup" Abzeichen! ;) – gnovice

Antwort

10

Ich würde verwenden, um die fprintf-Funktion, die Sie für sich selbst, welches Format zur Ausgabe der Daten in beispielsweise definieren können.

fid = fopen('output.txt', 'wt'); 
fprintf(fid,'%0.6f %0.6f\n', A.'); 
fclose(fid); 

Dies wird Ausgang der Matrix A mit 6 Ziffern der Präzision nach dem Komma. Beachten Sie, dass Sie auch die Funktionen fopen und fclose verwenden müssen.

+0

Für die Editoren ist zu beachten, dass das '.'' im Code notwendig ist, um' A' in eine 2-by-N-Matrix zu transponieren, damit FPRINTF spaltenweise lesen kann. – gnovice

3

Dito gnovice Lösung, wenn Sie Leistung & benutzerdefinierte Formatierung benötigen.

dlmwrite gibt Ihnen einige Kontrolle (global, nicht pro Feld) der Formatierung. Aber es leidet an geringerer Leistung. Ich habe vor ein paar Jahren einen Test durchgeführt und dlmwrite war etwas 5-10x langsamer als die fopen/fprintf/fclose-Lösung. (Bearbeiten: Ich beziehe mich auf große Matrizen, wie eine 15x10000 Matrix)

Verwandte Themen