Matlab 怎么导入 Excel 数据?这事儿,听起来可能有点儿技术活儿,但说白了,就是让 Matlab 这个爱捣鼓数字的家伙,读懂 Excel 那个规规矩矩放表格的本子。别觉得多高深,我跟你讲,真就像我们平时从笔记本里抄点儿数据出来分析一个道理。只是,它有它特定的“抄写”方式。
你想啊,我们搞科研的,做工程的,甚至就分析个市场报告,数据源头哪儿来? Excel 绝对是绕不过去的坎儿。那些密密麻麻的数字、文字,各种表格,可不是摆着看的。得拉到 Matlab 里,让它跑模型,画图,找出里面的规律,或者验证我们的想法。所以,把 Excel 里的东西“搬”进 Matlab,这是家常便饭,是基础得不能再基础的操作,简直就像学开车得先知道油门在哪儿一样重要。
说到“搬”,办法可不止一种。就像你搬家,可以自己一点点儿收拾打包,也可以请专业的搬家公司。在 Matlab 里,这个“搬”的过程,也有不同的“工具”和“手法”。
最常见、也是我个人最常用、感觉最“傻瓜”的办法,就是用那个叫做 readmatrix 的函数。听名字就明白了,读矩阵。Excel 文件里,数据通常不就是以矩阵或者说二维表格的形式存放的嘛。这个函数,好就好在它比较新,也比较智能。你给它一个 Excel 文件的名字,它就能吭哧吭哧地去读。比如,你的数据存在一个叫做 我的数据.xlsx 的文件里,你想把第一个 Sheet 的数据读进来,最简单的命令就是:
matlab
myData = readmatrix('我的数据.xlsx');
瞧,多简洁!这就像你指着文件说:“喂,把这里面的数字都给我拿过来!” 然后 Matlab 就把里面的纯数字数据一股脑儿地装到了一个叫做 myData 的变量里。这个 myData,现在在 Matlab 看来,就是一个矩阵了。
不过生活哪有这么顺利?有时候 Excel 文件里,可不止数字。表头啊、文字说明啊、日期啊,五花八门。readmatrix 默认只读数字,遇到非数字的单元格,它可能就懵了,要么跳过,要么给你个 NaN(不是一个数字)。那怎么办?别急,readmatrix 也是个挺灵活的家伙,它有很多参数可以调教。
比如说,你想指定读哪个 Sheet 的数据,可以用 'Sheet' 参数:
matlab
sheet2Data = readmatrix('我的数据.xlsx', 'Sheet', '第二个表格');
或者,你只想读某个区域的数据,比如只想读 A1 到 C10 这块地方的数据,可以用 'Range' 参数:
matlab
partData = readmatrix('我的数据.xlsx', 'Range', 'A1:C10');
是不是感觉像在 Excel 里选中一块区域一样?对,就是这个意思。
有时候,表头那些文字也挺重要的,或者你想读的数据里夹杂着日期或者其他文本信息。readmatrix 就有点儿力不从心了,因为它主要是为数字而生的。这时候,我们就需要请出另一位重量级选手—— readtable。
readtable 顾名思义,它是把 Excel 里的数据当作一个“表格”(Table)来读。表格跟矩阵不一样在哪儿?表格可以有不同类型的数据列,比如一列是数字,一列是文本,一列是日期。这对于处理真实世界里那些“混搭”的数据来说,简直是太方便了。
用 readtable 读数据,跟 readmatrix 差不多简单:
matlab
myTable = readtable('我的数据.xlsx');
这条命令下去,Matlab 会尝试智能地判断每一列的数据类型,然后把整个表格,包括表头(如果第一行是表头的话),都读到一个叫做 myTable 的 Table 变量里。这个 myTable 就像一个带列名的、更高级的数据容器。你可以通过列名来访问数据,比如 myTable.列名,或者通过索引,比如 myTable{:, '列名'}。这比操作纯数字矩阵要直观多了,尤其是当你的数据有很多列,而且每一列都有特定的含义时。
readtable 同样也支持 'Sheet' 和 'Range' 参数,用法跟 readmatrix 类似。它还有一个非常实用的参数叫做 'VariableNamingRule',用来处理表头。有时候 Excel 的表头可能不太规范,比如有空格或者特殊字符。Matlab 变量名可不能有这些东西。你可以设置 'VariableNamingRule' 为 'preserve' 来保留原始列名(但可能需要用 myTable.('有空格的列名') 这样的方式来访问),或者设置为 'modify'(默认值),让 Matlab 自动想办法改成合法的变量名。我个人比较喜欢让它自己修改,省事儿。
还有一个更高级的玩法,如果你需要对导入过程有更细致的控制,比如指定每一列的数据类型,处理缺失值的方式,甚至是读入特定格式的日期,那就得请出 readcell 或者更底层一点儿的 COM 接口(不过后者一般人真用不着,而且有点儿过时了)。
readcell 是把 Excel 的内容,无论数字、文本、日期,都当作“单元格”(Cell)来读。结果是一个 Cell Array,一个由 Cell 组成的数组。每个 Cell 里装着一个 Excel 单元格的内容。
matlab
myCells = readcell('我的数据.xlsx');
这样读出来的数据, myCells 是一个二维的 Cell Array。比如 myCells{1, 1} 就是 Excel 里 A1 单元格的内容。这种方式的好处是它不挑食,什么都读进来,给你一个原始的“快照”。坏处是读进来之后,你可能需要自己动手,一个单元格一个单元格地去处理里面的数据,判断类型,转换格式,相对比较灵活但更费事。如果你知道你的 Excel 文件结构非常不规则,或者包含了太多混合类型的数据,用 readcell 也许是更稳妥的选择,虽然后续的数据清洗工作会多一些。
除了这些高阶函数,还有一些老派的函数,比如 xlsread。这个函数曾经是 Matlab 导入 Excel 的主力,但在新版本里,MathWorks 官方已经推荐使用 readmatrix 和 readtable 了,甚至在未来的版本中可能会移除 xlsread。为啥?因为它有时候行为不够一致,特别是跨平台的时候可能会出点儿问题,而且功能上也不如 readmatrix 和 readtable 灵活。不过,如果你维护的是一些老代码,或者用的 Matlab 版本比较旧,可能还会遇到它。它的基本用法跟 readmatrix 差不多,也可以指定 Sheet 和 Range。了解一下就好,但新的项目,我真心建议你直接拥抱 readmatrix 和 readtable。
总的来说,从 Excel 往 Matlab 导入数据,不是什么神秘仪式。它就是个工具活儿。关键在于,你要先看看你的 Excel 文件长啥样。是纯数字的?那就 readmatrix 走起。是数字、文字、日期混着的?那就 readtable 更合适。文件结构太复杂,五花八门?那就试试 readcell,然后自己慢慢收拾。
对了,还有一点非常重要,就是文件路径。你的 Matlab 脚本或者当前工作目录,得能“找”到那个 Excel 文件。要么把 Excel 文件放到 Matlab 当前工作的文件夹里,要么在命令里写完整的路径,比如 'C:\Users\我的文档\数据分析\我的数据.xlsx'。路径不对,Matlab 会告诉你文件找不到,那就没法儿读了。这可是个新手常犯的错误,别问我怎么知道的,都是泪啊!
而且,处理大型 Excel 文件时,性能也是个考虑因素。readmatrix 和 readtable 在处理大文件时通常比老的 xlsread 要快一些,也更稳定。如果你的 Excel 文件特别巨大,导入过程可能会花点儿时间,这时候别怀疑是不是 Matlab 卡死了,给它点儿耐心。
有时候,导入数据后,你会发现一些小问题,比如数字格式不对(本来是整数读进来成了小数),日期格式不对(读进来一堆数字),或者有空单元格(读成了 NaN 或空字符串)。这些都属于数据清洗的范畴了,得在导入之后,用 Matlab 的各种数据处理函数去修正。导入只是第一步,把数据“请”进来,后面的“待客之道”——数据清洗和分析,才是真正考验你 Matlab 功力的地方。
所以,别怕 Excel 数据导入 Matlab 这件事儿。它没那么可怕,更没那么复杂。找到合适的“搬家工具”,弄清楚你的“行李”长啥样,然后对着手册(Matlab 文档是最好的老师!)敲几行命令,数据自然就乖乖地进到 Matlab 的世界里了。等你多操作几次,这事儿就熟门熟路了,感觉就像用筷子夹菜一样自然。甚至你会开始琢磨,怎么用更优雅、更高效的方式来处理这些数据。毕竟,数据是基础,能把基础打牢,后面的分析建模才能玩得转嘛。现在,去试试吧,打开你的 Excel 文件,启动你的 Matlab,让它们俩“对话”起来!
【matlab怎么导入excel数据】相关文章:
excel一个单元格怎么分成两个单元格12-05
excel怎么制作散点图12-05
excel表格怎么解除密码12-05
excel单引号怎么打12-05
excel表格怎么设置自动求和12-05
excel怎么匹配两列数据12-05
matlab怎么导入excel数据12-05
excel表格怎么快速求和12-05
电脑怎么安装excel表格12-05
excel表格怎么调整行距12-05
excel比例图怎么做12-05
把txt转换成excel,这件事儿吧,说难也不难,但真要方便顺手,还真得讲究点方法。12-05
工资条 Excel 怎么做?12-05