MATLAB - Uscita dati

L'esportazione (o l'output) dei dati in MATLAB significa scrivere in file. MATLAB ti consente di utilizzare i tuoi dati in un'altra applicazione che legge i file ASCII. Per questo, MATLAB fornisce diverse opzioni di esportazione dei dati.

È possibile creare il seguente tipo di file:

  • File di dati ASCII rettangolare e delimitato da un array.

  • File di diario (o registro) di sequenze di tasti e output di testo risultante.

  • File ASCII specializzato che utilizza funzioni di basso livello come fprintf.

  • File MEX per accedere alla routine C / C ++ o Fortran che scrive in un particolare formato di file di testo.

Oltre a questo, puoi anche esportare i dati su fogli di calcolo.

Esistono due modi per esportare un array numerico come file di dati ASCII delimitato:

  • Usando il save funzione e specificando la -ascii qualificatore

  • Usando il dlmwrite funzione

La sintassi per l'utilizzo della funzione di salvataggio è:

save my_data.out num_array -ascii

dove, my_data.out è il file di dati ASCII delimitato creato, num_array è un array numerico e−ascii è lo specificatore.

Sintassi per l'utilizzo di dlmwrite la funzione è -

dlmwrite('my_data.out', num_array, 'dlm_char')

dove, my_data.out è il file di dati ASCII delimitato creato, num_array è un array numerico e dlm_char è il carattere delimitatore.

Esempio

Il seguente esempio dimostra il concetto. Crea un file di script e digita il codice seguente:

num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out

Quando si esegue il file, viene visualizzato il seguente risultato:

1.0000000e+00   2.0000000e+00   3.0000000e+00   4.0000000e+00
   4.0000000e+00   5.0000000e+00   6.0000000e+00   7.0000000e+00
   7.0000000e+00   8.0000000e+00   9.0000000e+00   0.0000000e+00

1 2 3 4
4 5 6 7
7 8 9 0

Si noti che il comando save -ascii e la funzione dlmwrite non funzionano con gli array di celle come input. Per creare un file ASCII delimitato dal contenuto di un array di celle, puoi farlo

  • In alternativa, converti l'array di celle in una matrice utilizzando l'estensione cell2mat funzione

  • Oppure esportare la matrice di celle utilizzando le funzioni di I / O di file di basso livello.

Se usi l'estensione save funzione per scrivere un array di caratteri in un file ASCII, scrive l'equivalente ASCII dei caratteri nel file.

Ad esempio, scriviamo la parola "ciao" in un file:

h = 'hello';
save textdata.out h -ascii
type textdata.out

MATLAB esegue le istruzioni precedenti e visualizza il risultato seguente. che sono i caratteri della stringa "ciao" in formato ASCII a 8 cifre.

1.0400000e+02   1.0100000e+02   1.0800000e+02   1.0800000e+02   1.1100000e+02

Scrivere su file di diario

I file di diario sono registri delle attività della tua sessione MATLAB. La funzione diario crea una copia esatta della sessione in un file su disco, escludendo la grafica.

Per attivare la funzione diario, digita -

diary

Facoltativamente, puoi dare il nome del file di registro, ad esempio -

diary logdata.out

Per disattivare la funzione di diario:

diary off

Puoi aprire il file del diario in un editor di testo.

Esportazione di dati in file di dati di testo con I / O di basso livello

Finora abbiamo esportato array numerici. Tuttavia, potrebbe essere necessario creare altri file di testo, comprese combinazioni di dati numerici e di caratteri, file di output non rettangolari o file con schemi di codifica non ASCII. Per questi scopi, MATLAB fornisce il livello bassofprintf funzione.

Come nelle attività di file di I / O di basso livello, prima di esportare, è necessario aprire o creare un file con l'estensione fopenfunzione e ottenere l'identificatore del file. Per impostazione predefinita, fopen apre un file per l'accesso in sola lettura. È necessario specificare l'autorizzazione per scrivere o aggiungere, ad esempio "w" o "a".

Dopo aver elaborato il file, è necessario chiuderlo con fclose(fid) funzione.

Il seguente esempio dimostra il concetto:

Esempio

Crea un file di script e digita il seguente codice al suo interno:

% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
 
% open a file for writing
fid = fopen('logtable.txt', 'w');
 
% Table Header
fprintf(fid, 'Log     Function\n\n');
 
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f    %f\n', y);
fclose(fid);

% display the file created
type logtable.txt

Quando si esegue il file, viene visualizzato il seguente risultato:

Log         Function

0.000000    -Inf
10.000000    2.302585
20.000000    2.995732
30.000000    3.401197
40.000000    3.688879
50.000000    3.912023
60.000000    4.094345
70.000000    4.248495
80.000000    4.382027
90.000000    4.499810
100.000000    4.605170