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.

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top