Was ist der Schnellste Weg zu schreiben, eine matrix in eine text-Datei in die Oktave?
Ich habe eine große matrix (2e6 x 3) was muss ich schreiben, um eine text-Datei.
dlmwrite dauert etwa 230s, um diese Aufgabe.
Ihrer Erfahrung, was ist der Schnellste Weg zu schreiben, eine große matrix in eine text-Datei?
Haben Sie versucht, das
Sie müssen nur die Daten speichern, oder muss es formatiert werden in eine text-Datei? @petrichor ' s Idee sollte aber funktionieren.
-ascii
Möglichkeit save
. Das ist save -ascii output.txt variableName
Sie müssen nur die Daten speichern, oder muss es formatiert werden in eine text-Datei? @petrichor ' s Idee sollte aber funktionieren.
InformationsquelleAutor Steven | 2012-10-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gilt in MATLAB, aber ich schlage vor, Sie versuchen es in die Oktave. Vor allem, wenn Sie können - transponieren der matrix. Hier sind Beispiele für die Verwendung von
fprintf
undcsvwrite
(im wesentlichendlmwrite
)Wenn nicht umgesetzt, es wird Jahre dauern, in der Tat. Standardmäßig wird
fprintf
leert den Puffer nach jedem Aufruf. Sie können versuchen, zu verwendenW
stattw
um die Datei zu öffnen, aber es verbessert nicht die situation hier zu viel.Vermeiden Sie die explizite Schleife und verwenden Sie eine
fprintf(fid,'%f %f %f\n',A)
Auch, fprintf recyceln das format angewendet, um die Variablen spaltenweise. E. g:tic;fid = fopen('data.txt', 'w+'); fprintf(fid, 'a=%f b=%f c=%f\n', A); fclose(fid);toc
Verstrichene Zeit ist 2.019833 Sekunden. und gibt drei zahlen und ein newline auf jedem 1e6 Linien.InformationsquelleAutor angainor
Hast du das probiert? Ich bin mir nicht sicher über die Geschwindigkeit im Vergleich zu dlmwrite.
InformationsquelleAutor Anant Gupta
Eine variable
data
können Sie es speichern, in einemtext
format mit Leerzeichen-separierte Werte (einschließlich der header):Den header kann einfach entfernt werden mit grundlegenden Unix-Befehl
> tail
z.B. (auf jeder Linux/Mac OS):InformationsquelleAutor Tombart
Theoretisch, nach dem, was @angainor sagt, man kann sogar die Leistung verbessern
Verpackung irgendwie
in Blöcken zu vermeiden, nutzlos, Puffer flushen, ich.e.dabei
Sollten versuchen..
InformationsquelleAutor Acorbe
Verwenden Sie diese in Matlab:
Verwenden Sie diese in Octave:
InformationsquelleAutor harrypotter0