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.

Foi útil?

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)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top