Come si fa a salvare i dati in un file di testo in un dato formato?
-
06-09-2019 - |
Domanda
Voglio salvare una matrice in un file di testo, in modo da poter leggere da un altro programma. In questo momento io uso:
save('output.txt', 'A','-ascii');
Ma questo salva il mio file come
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
Ma mi piacerebbe averli salvati senza la "e-la notazione" e non con tutte le cifre. C'è un modo semplice per fare questo?
Edit: Grazie! Che funziona bene. Ci dispiace, ma penso che ho incasinato la tua modifica utilizzando il rollback.
Soluzione
Vorrei utilizzare il fprintf
funzione, che vi permetterà di di definire da soli ciò che formato per scrivere i dati in. ad esempio:
fid = fopen('output.txt', 'wt');
fprintf(fid,'%0.6f %0.6f\n', A.');
fclose(fid);
Ciò produrrà la matrice A con 6 cifre di precisione dopo il punto decimale. Si noti che si hanno anche per utilizzare le funzioni fopen
e fclose
.
Altri suggerimenti
soluzione Idem di gnovice, se avete bisogno di formattazione prestazioni e personalizzato.
dlmwrite
ti dà un certo controllo (globale , non per ogni singolo campo) di formattazione. Ma soffre di prestazioni inferiori. Ho eseguito un test di un paio di anni fa e dlmwrite era qualcosa come 5-10x più lento rispetto alla / fprintf / soluzione fclose fopen. (Edit: mi riferisco alle grandi matrici, come una matrice 15x10000)