Como você salvar os dados em um arquivo de texto em um determinado formato?
-
06-09-2019 - |
Pergunta
Eu quero salvar uma matriz para um arquivo de texto, para que eu possa lê-lo por outro programa. Agora eu uso:
save('output.txt', 'A','-ascii');
Mas isso economiza meu arquivo 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
Mas eu gostaria de tê-los salvo sem o "e-notação" e não com todos os dígitos. Existe uma maneira fácil de fazer isso?
Editar: Obrigado! Isso funciona muito bem. Desculpe, mas eu acho que eu errei sua edição usando a reversão.
Solução
Gostaria de usar a função fprintf
, que permitirá que você definir por si mesmo o formato para a saída dos dados. por exemplo:
fid = fopen('output.txt', 'wt');
fprintf(fid,'%0.6f %0.6f\n', A.');
fclose(fid);
A saída será a matriz A com 6 dígitos de precisão após o ponto decimal. Note que você também tem que usar as funções fopen
e fclose
.
Outras dicas
solução Ditto de gnovice, se você precisar de desempenho e formatação personalizada.
dlmwrite
dá-lhe algum controle (global , não base por campo) de formatação. Mas ele sofre de menor desempenho. Corri um teste há alguns anos e dlmwrite era algo como 5-10x mais lento do que o / fprintf solução fopen / fclose. (Edit: estou me referindo a grandes matrizes, como uma matriz 15x10000)