Matlab 导入Excel表数据的方法

Matlab 导入 Excel 表数据的方法

1. 使用 UI 界面中的 导入数据 功能。

image-20200722093843476

2. 在工作区直接导入复制的 Excel 内容

  1. 在工作区新建一个变量。image-20200722094009366
  2. 用鼠标双击这个变量,查看这个变量的内容:image-20200722094051286
  3. 从 Excel 表中直接 Ctrl + C 复制数据image-20200722094130375
  4. 直接在 变量的第一个单元格中鼠标右击,选择 ‘粘贴 Excel 数据’ 即可image-20200722094259765

3. 使用 A = xlsread(‘fileURL’, n)

n 取大于 0 的数字,表示读取 sheet n 的所有表格,不写 n 的时候会取 sheet 1 的所有数据。

函数直接读取 fileURL 所指文件的 sheet n 中的数据区域存储到双精度矩阵 A 中;其中,数据区域的选取规则是:对表格前几个含有非数值的行(列)直接忽略,不算入数据区域;另外如果在数据区域中含有非数值的单元,将其处理为 NaN。

clc;
tic;
clear all;

url = 'E:\Users\Sun and Snow\Desktop\葡萄酒2012A\附件1-葡萄酒品尝评分表.xls';
redAlcohol_1 = xlsread(url);

toc;

Excel 表的 sheet1 如下:image-20200727161254488

导入后的矩阵如下:image-20200727161328509

当我们把原始的 Excel 表格排版好之后,用这个先读取,再删除 非数字行 。不就很方便了?

删除矩阵第 k 列 :A(:, k) = []; 删除矩阵第 k 行:A(k, :) = [];

判断第 i 行元素是否全部为 NaN :isnan(A(i, :))

实例

image-20200727165110078

这个文件 sheet2 表一共有 28 个子表。我打算把所有的数据全部抽出来,其余的无关单元格全部删除。比如 A、B、C 三列我就会全部删掉。最终结果是一个 280*10 矩阵。因为 每个 样品有 10 个指标,共28 个样品,所以 280 行。每个指标有 10 个人评价,所以 10 列。

源代码如下:

clc;
tic;

url = 'E:\Users\Sun and Snow\Desktop\葡萄酒2012A\附件1-葡萄酒品尝评分表.xls';
whiteAlcohol = xlsread(url, 2); % 导入 url Excel 文件的 sheet 2 所有信息。

whiteAlcohol_copy = whiteAlcohol; % copy 矩阵为导出后的矩阵的备份,用于与处理后的矩阵作比较
whiteAlcohol(:, 1:3) = []; % 删除不需要的列
whiteAlcohol(1, :) = []; % 删除不需要的行

[m, n] = size(whiteAlcohol);

%% 删除矩阵中每一个元素全部为 NaN 的 行向量
i = 1;
while i <= m
    if  isnan(whiteAlcohol(i, :)) % 判断第 i 行元素是否全部为 NaN
        whiteAlcohol(i, :) = []; % 删除全部为 NaN 的第 i 行
        m = m - 1; % 因为删除了矩阵的一行,矩阵的行总数 m 要 -1
        continue; % i 指针因为删除了一行,新的一行元素还没有检查是否全部为 NaN,所以不能递增
    end
    i = i + 1; % i 指针指向下一行
end

toc;

处理前的矩阵:image-20200727165511306

处理后的矩阵:image-20200727165528665

4. 使用 A = xlsread(‘fileURL’, -1)

使用这个格式的 xlsread 后,会立即打开 对应的 Excel 表格,然后可以自己手动选择想要导入的表格范围,一切完成后,Excel 的表格会以矩阵的格式直接存储在 A 中。

clc;
tic;

url = 'E:\Users\Sun and Snow\Desktop\葡萄酒2012A\附件1-葡萄酒品尝评分表.xls';
redAlcohol_1 = xlsread(url, -1)

toc;

运行后,直接弹出 Excel 表格:image-20200727160650777

确定好要导入的表格范围后再点击 “确定”。image-20200727160751601

image-20200727160809229

image-20200727160836216

这种方法可以选择子表,但是终究是太繁琐了。

5. 使用 A = xlsread(‘url’, sheetNum, ‘range’)

url` 表示 Excel 文件位置

sheetNum 表示要读取 Excel 文件第 sheetNum 子表。

range 表示读取的单元格范围。

将选定范围的矩阵导入 A 变量。

6. [NUM, TXT, RAW] = xlsread(url, sheetNum)

对于如下的 表格:image-20200727175639271

NUM 存储 从 Excel 表中第一个纯数字开始的矩阵,非纯数字全部转化为 NaN。

image-20200727175731520

TXT 存储 Excel 表中的所有字符串(非纯数字),并且尽量还原 Excel 表中的字符串位置,纯数字的单元格导入 matlab 后为 空。image-20200727175748294

RAW 存储 Excel 中所有的纯数字和字符串,但是 Excel 表格中为 未填写的单元格在 RAW 中为 NaN。image-20200727175830118

CSDN 参考

  • 78
    点赞
  • 378
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值