¿Cómo se guarda los datos en un archivo de texto en un formato determinado?
-
06-09-2019 - |
Pregunta
Quiero salvar una matriz a un archivo de texto, para que pueda leerlo por otro programa. En este momento yo uso:
save('output.txt', 'A','-ascii');
Pero esto ahorra mi archivo como
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
Pero me gustaría tenerlos guardados sin la "e-notación" y no con todos los dígitos. ¿Hay una manera fácil de hacer esto?
Edit: Gracias! Eso funciona muy bien. Lo sentimos, pero creo que su mal estado de edición mediante el uso de la reversión.
Solución
Me gustaría utilizar el href="https://www.mathworks.com/help/matlab/ref/fprintf.html" rel="nofollow noreferrer"> Esta es la salida de la matriz A con 6 dígitos de precisión después del punto decimal. Tenga en cuenta que también hay que utilizar las funciones fprintf
función
fid = fopen('output.txt', 'wt');
fprintf(fid,'%0.6f %0.6f\n', A.');
fclose(fid);
fopen
y fclose
.
Otros consejos
Lo mismo ocurre con la solución de gnovice, si necesita el rendimiento y la costumbre de formato.
dlmwrite
le da cierto control (global , no por campos) de formato. Pero adolece de un bajo rendimiento. Corrí una prueba hace unos años y dlmwrite era algo así como 5-10x más lenta que la solución fopen / fprintf / fclose. (Edit: me refiero a grandes matrices, como una matriz 15x10000)