讀輸入寫輸出

就像所有程式語言一樣,Matlab 設計用於以各種格式進行讀寫。本機庫支援大量的文字,影象,視訊,音訊,資料格式,每種版本更新中包含更多格式 - 請在此處檢視支援的檔案格式的完整列表以及用於匯入它們的功能。

在嘗試載入檔案之前,你必須問自己,你希望資料成為什麼樣,以及你希望計算機如何為你組織資料。假設你有以下格式的 txt / csv 檔案:

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

我們可以看到第一列是字串格式,第二列是數字,最後一列是貨幣形式。假設我們想要找到今天使用 Matlab 賺取多少收入,首先我們要載入這個 txt / csv 檔案。檢查連結後,我們可以看到 textscan 處理字串和數字型別的 txt 檔案。所以我們可以嘗試:

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

其中%s 表示該元素是 String 型別,%f 表示該元素是 Float 型別,並且該檔案由“,”分隔。HeaderLines 選項要求 Matlab 跳過前 N 行,而緊跟在後面的 1 表示跳過第一行(標題行)。

現在 C 是我們載入的資料,其形式為 4 個單元格的單元格,每個單元格包含 txt / csv 檔案中的資料列。

首先,我們想要通過從第二列中減去第三列來計算我們今天銷售的水果數量,這可以通過以下方式完成:

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

現在我們想要將這個向量乘以每單位價格,所以首先我們需要將該列的 Strings 轉換為 Numbers 列,然後使用 Matlab 的 cell2mat 將其轉換為數字矩陣,我們需要做的第一件事就是剝離 - 關閉“$”符號,有很多方法可以做到這一點。最直接的方法是使用簡單的正規表示式:

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

或者你可以使用迴圈:

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

str2num 函式將帶有“$”符號的字串轉換為數字型別,cell2mat 將數字元素的單元格轉換為數字矩陣

現在我們可以將銷售的單位乘以每單位成本:

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

totalrevenue = sum(revenue);