Contenuto principale

Scrittura di dati nei file di testo

Esportare dati tabellari contenuti in tabelle, array di celle o array numerici dal workspace di MATLAB® in file di testo.

Esportazione di una tabella in un file di testo

È possibile esportare dati tabellari dal workspace di MATLAB® in un file di testo utilizzando la funzione writetable. Creare una tabella di esempio, scrivere la tabella in un file di testo, quindi scrivere la tabella in un file di testo con ulteriori opzioni.

Creare una tabella di esempio T, contenente le variabili Pitch, Shape, Price e Stock.

Pitch = [0.7;0.8;1;1.25;1.5];
Shape = {'Pan';'Round';'Button';'Pan';'Round'};
Price = [10.0;13.59;10.50;12.00;16.69];
Stock = [376;502;465;1091;562];
T = table(Pitch,Shape,Price,Stock)
T=5×4 table
    Pitch      Shape       Price    Stock
    _____    __________    _____    _____

     0.7     {'Pan'   }       10     376 
     0.8     {'Round' }    13.59     502 
       1     {'Button'}     10.5     465 
    1.25     {'Pan'   }       12    1091 
     1.5     {'Round' }    16.69     562 

Esportare la tabella T, in un file di testo denominato tabledata.txt. Visualizzare il contenuto del file. Per impostazione predefinita, writetable scrive i dati separati da virgole e include i nomi delle variabili della tabella come intestazioni delle colonne.

writetable(T,'tabledata.txt');
type tabledata.txt
Pitch,Shape,Price,Stock
0.7,Pan,10,376
0.8,Round,13.59,502
1,Button,10.5,465
1.25,Pan,12,1091
1.5,Round,16.69,562

Creare una tabella T2 che includa i nomi delle righe utilizzando l'argomento della coppia nome-valore RowNames.

rowNames = {'M4';'M5';'M6';'M8';'M10'};
T2 = table(Pitch,Shape,Price,Stock,'RowNames',rowNames)
T2=5×4 table
           Pitch      Shape       Price    Stock
           _____    __________    _____    _____

    M4      0.7     {'Pan'   }       10     376 
    M5      0.8     {'Round' }    13.59     502 
    M6        1     {'Button'}     10.5     465 
    M8     1.25     {'Pan'   }       12    1091 
    M10     1.5     {'Round' }    16.69     562 

Esportare T2 in un file di testo delimitato da tabulazioni denominato tabledata2.txt. Utilizzare l'argomento della coppia nome-valore Delimiter per specificare un delimitatore di tabulazione e l'argomento della coppia nome-valore WriteRowNames per includere i nomi delle righe. Visualizzare il contenuto del file.

writetable(T2,'tabledata2.txt','Delimiter','\t','WriteRowNames',true);
type tabledata2.txt
Row	Pitch	Shape	Price	Stock
M4	0.7	Pan	10	376
M5	0.8	Round	13.59	502
M6	1	Button	10.5	465
M8	1.25	Pan	12	1091
M10	1.5	Round	16.69	562

Esportazione di un array di celle in un file di testo

È possibile esportare un array di celle dal workspace di MATLAB® in un file di testo in uno dei seguenti modi:

  • Utilizzare la funzione writecell per esportare l'array di celle in un file di testo.

  • Utilizzare fprintf per esportare l'array di celle specificando il formato dei dati di output.

Creare un array di celle di esempio C.

C = {'Atkins',32,77.3,'M';'Cheng',30,99.8,'F';'Lam',31,80.2,'M'}
C = 3×4 cell array
    {'Atkins'}    {[32]}    {[77.3000]}    {'M'}
    {'Cheng' }    {[30]}    {[99.8000]}    {'F'}
    {'Lam'   }    {[31]}    {[80.2000]}    {'M'}

Esportare l'array di celle utilizzando writecell.

writecell(C,'data.dat')

Visualizzare il contenuto del file.

type data.dat
Atkins,32,77.3,M
Cheng,30,99.8,F
Lam,31,80.2,M

In alternativa, importare l'array di celle utilizzando fprintf. Aprire un file scrivibile denominato celldata.dat. Definire formatSpec utilizzando gli specificatori di formato per descrivere il pattern dei dati nel file. Gli specificatori di formato tipici includono '%s' per un vettore di caratteri, '%d' per un numero intero o '%f' per un numero in virgola mobile. Separare ogni specificatore di formato con uno spazio per indicare un delimitatore di spazio per il file di output. Include un carattere di nuova riga alla fine di ogni riga di dati ('\n').

fileID = fopen('celldata.dat','w');
formatSpec = '%s %d %2.1f %s\n';

Determinare la dimensione di C ed esportare una riga di dati alla volta utilizzando la funzione fprintf. Quindi chiudere il file. fprintf scrive un file delimitato da spazi.

[nrows,ncols] = size(C);
for row = 1:nrows
    fprintf(fileID,formatSpec,C{row,:});
end
fclose(fileID);

Visualizzare il contenuto del file.

type celldata.dat
Atkins 32 77.3 M
Cheng 30 99.8 F
Lam 31 80.2 M

Esportazione di un array numerico in un file di testo

È possibile esportare un array numerico in un file di testo utilizzando writematrix.

Creare un array numerico A.

A = magic(5)/10 
A = 5×5

    1.7000    2.4000    0.1000    0.8000    1.5000
    2.3000    0.5000    0.7000    1.4000    1.6000
    0.4000    0.6000    1.3000    2.0000    2.2000
    1.0000    1.2000    1.9000    2.1000    0.3000
    1.1000    1.8000    2.5000    0.2000    0.9000

Scrivere l'array numerico in myData.dat e specificare che il delimitatore sia ';'. Quindi, visualizzare il contenuto del file.

writematrix(A,'myData.dat','Delimiter',';')  
type myData.dat
1.7;2.4;0.1;0.8;1.5
2.3;0.5;0.7;1.4;1.6
0.4;0.6;1.3;2;2.2
1;1.2;1.9;2.1;0.3
1.1;1.8;2.5;0.2;0.9

Vedi anche

| | | | |