读输入写输出
就像所有编程语言一样,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);