3 votes

Comment enregistrer des données dans un fichier texte dans un format donné ?

Je souhaite enregistrer une matrice dans un fichier texte, afin de pouvoir la lire dans un autre programme. Pour l'instant, j'utilise :

save('output.txt', 'A','-ascii');

Mais cela enregistre mon fichier sous la forme

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

Mais j'aimerais les enregistrer sans la "e-notation" et non avec tous les chiffres. Existe-t-il un moyen simple de le faire ?

Edit : Thank you ! Cela fonctionne très bien. Désolé, mais je pense que j'ai gâché votre édition en utilisant le retour en arrière.

10voto

gnovice Points 70970

J'utiliserais le fprintf qui vous permettra de définir vous-même le format de sortie des données. Par exemple, cette fonction permet de définir le format de sortie des données :

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

Cela donnera la matrice A avec 6 chiffres de précision après la virgule. Notez que vous devez également utiliser les fonctions fopen y fclose .

3voto

Jason S Points 58434

Idem pour la solution de gnovice, si vous avez besoin de performances et d'un formatage personnalisé.

dlmwrite vous permet de contrôler le formatage (globalement et non par champ). Mais il est moins performant. J'ai fait un test il y a quelques années et dlmwrite était environ 5-10x plus lent que la solution fopen/fprintf/fclose. (edit : je me réfère à de grandes matrices, comme une matrice 15x10000)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X