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.

¿Fue útil?

Solución

Me gustaría utilizar el href="https://www.mathworks.com/help/matlab/ref/fprintf.html" rel="nofollow noreferrer"> fprintf función

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

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 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)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top