从excel中读取数据
[num, txt, raw]=xlsread(filename, sheet, xlRange)
参数说明:filename是所需读取的文件名,比如说‘样本.xls’;选择所在的sheet,比如说’sheet1’;xlrange为读取的单元格范围,比如说’A2:F101’.
返回值:函数num返回xls中的数字,txt返回xls中的文本,通常 raw 返回的元胞矩阵,更通用一些,所以以下将使用元胞矩阵进行操作,如果不想让函数返回 num, txt, 可 以用 ~ 代替:
[~, ~, raw]=xlsread(filename, sheet, xlRange)
什么是元胞矩阵:元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。比如说读取excel表格时可将所有数据都包含在raw中,比如成绩单中的姓名。
从元胞矩阵中取出特定的数据进行排序求和
元胞数组进行排序,求和,求均值等处理需要转化为矩阵 (non-cell array)
以下声明新变量(矩阵)intermediate用作数据临时处理
intermediate=cell2mat(raw(:, 2 : 6));
其中 raw(:, 2 : 6)意义为: 取出raw矩阵中的从第2列到第6列的(第二个参数)所有行(第一个参数),并用cell将取出的元胞矩阵转换成普通矩阵,以便进行排序求和计算。关于取矩阵相关知识请自行百度
排序,求和
排序sort(intermediate, 2)
求和sum(intermediate, 2)
其中sort和sum参数类型相似,第一个参数为需要排序操作的矩阵,第二个参数为按行或者按列排序,参数1为按列排序,参数2为按行排序,相关知识自行百度
用以排序和求和好的intermediate更新raw
raw(:, 2 : 7)=num2cell([sort(intermediate, 2), sum(intermediate, 2)]);
含关键字排序
raw=sortrows(raw, -7);
输出到excel
xlswrite('样本1.xls',raw,'A2:G101')