MATLAB Language Lettura di input e scrittura


Esempio

Proprio come tutti i linguaggi di programmazione, Matlab è progettato per leggere e scrivere in un'ampia varietà di formati. La libreria nativa supporta un gran numero di formati di testo, immagini, video, audio, dati con più formati inclusi in ogni aggiornamento di versione - controlla qui per vedere l'elenco completo dei formati di file supportati e quale funzione utilizzare per importarli.

Prima di tentare di caricare il file, è necessario chiedersi cosa si desidera che i dati diventino e in che modo si aspetta che il computer organizzi i dati per conto dell'utente. Supponi di avere un file txt / csv nel seguente formato:

Fruit,TotalUnits,UnitsLeftAfterSale,SellingPricePerUnit
Apples,200,67,$0.14
Bananas,300,172,$0.11
Pineapple,50,12,$1.74

Possiamo vedere che la prima colonna è nel formato di stringhe, mentre la seconda, la terza è numerica, l'ultima colonna è in forma di valuta. Diciamo che vogliamo scoprire quante entrate abbiamo fatto oggi usando Matlab e prima vogliamo caricare in questo file txt / csv. Dopo aver controllato il collegamento, possiamo vedere che il tipo String e Numeric di file txt sono gestiti da textscan . Quindi potremmo provare:

fileID = fopen('dir/test.txt'); %Load file from dir
C = textscan(fileID,'%s %f %f %s','Delimiter',',','HeaderLines',1); %Parse in the txt/csv

dove %s suggerisce che l'elemento sia di tipo String, %f suggerisce che l'elemento sia di tipo Float e che il file sia Delimitato da ",". L'opzione HeaderLines chiede a Matlab di saltare le prime righe N mentre l'1 immediatamente dopo significa saltare la prima riga (la linea dell'intestazione).

Ora C è il dato che abbiamo caricato che ha la forma di una matrice di celle di 4 celle, ciascuna contenente la colonna di dati nel file txt / csv.

Quindi per prima cosa vogliamo calcolare quanti frutti abbiamo venduto oggi sottraendo la terza colonna dalla seconda colonna, questo può essere fatto da:

sold = C{2} - C{3}; %C{2} gives the elements inside the second cell (or the second column)

Ora vogliamo moltiplicare questo vettore per il Prezzo per unità, quindi prima dobbiamo convertire quella colonna di stringhe in una colonna di numeri, quindi convertirla in una matrice numerica usando la cell2mat di Matlab la prima cosa che dobbiamo fare è strisciare- fuori dal segno "$", ci sono molti modi per farlo. Il modo più diretto è usare una semplice regex:

D = cellfun(@(x)(str2num(regexprep(x, '\$',''))), C{4}, 'UniformOutput', false);%cellfun allows us to avoid looping through each element in the cell.

Oppure puoi usare un loop:

for t=1:size(C{4},1)
   D{t} = str2num(regexprep(C{4}{t}, '\$',''));
end

E = cell2mat(D)% converts the cell array into a Matrix

La funzione str2num trasforma la stringa che ha i segni "$" spogliati in tipi numerici e cell2mat trasforma la cella di elementi numerici in una matrice di numeri

Ora possiamo moltiplicare le unità vendute per il costo per unità:

revenue = sold .* E; %element-wise product is denoted by .* in Matlab

totalrevenue = sum(revenue);