在MATLAB导入txt文件技巧大全这篇推文中,讲解了如何将txt文件导入MATLAB中。今天继续为大家讲解如何将excel表格导入MATLAB中。
一个excel表格中可能有一个Sheet或多个Sheet,虽然在MATLAB中只需要加些代码即可轻松实现,但是为了帮助各位更容易理解。
因此,分为两部分讲解:1)excel表格中只有一个Sheet;2)excel表格中只有多个Sheet。
一 | excel表格中只有一个Sheet
表格中的数据如下所示,此时表格中只有一个Sheet。
01 | 导入第1列数据
现在想把第1列的数据全部导入进来,可以使用如下代码,A1表示这一列的第一个数据的位置,A13表示这一列的最后一个数据的位置。
filename = '例子.xlsx'; %文件名
[num,txt,raw] = xlsread(filename,'A1:A13'); %第一列在excel中为 A+数字,num是数字矩阵,txt是文字部分的元胞数组,raw是所有数据的元胞数组
运行如下,num是一个12行1列的矩阵,表示提取出的数字的矩阵;txt是一个1行1列的元胞数组,表示提取出的文字的元胞数组;raw是一个13行1列的元胞数组,表示提取出的所有数据的元胞数组:
xlsread函数在提取数字的过程中,遇到文字会分三种情况进行处理:
1)文字在需要导入的第一个数字之前,此时xlsread函数会自动跳过这些文字,直接跳到第一个需要导入的数字;
2)文字在需要导入的若干个数字之间,此时xlsread函数会将这些文字赋值为Nan。
3)文字在需要导入的若干个数字之后,此时xlsread函数会自动跳过这些文字。
在这个例子中,因为“序号”在第一个需要导入的数字“1”的前面,所以直接跳过“序号”。
02 | 导入第3列数据
为了进一步验证xlsread函数的机制,不妨拿第3列做一个实验,此时依然想把第3列所有数据全部导入进来,使用如下代码,C1表示这一列的第一个数据的位置,C13表示这一列的最后一个数据的位置:
filename = '例子.xlsx'; %文件名
[num,txt,raw] = xlsread(filename,'C1:C13'); %第三列在excel中为 C+数字,num是数字矩阵,txt是文字部分的元胞数组,raw是所有数据的元胞数组
代码运行结果如下,num是一个8行1列的矩阵,表示提取出的数字的矩阵;txt是一个13行1列的元胞数组,表示提取出的文字的元胞数组;raw是一个13行1列的元胞数组,表示提取出的所有数据的元胞数组:
在这个例子中,xlsread函数在提取数字时,因为“y坐标”、“七”和“八”在第一个需要导入的数字“9”的之前,所以直接跳过“y坐标”、“七”和“八”,而“十”在需要导入的数字之间,所以赋值为Nan,又因为“十七”和“十八”在需要导入的数字之后,所以直接跳过。
03 | 导入Sheet1全部数据
现在想导入全部数据,可使用如下代码:
filename = '例子.xlsx'; %文件名
[num,txt,raw] = xlsread(filename); %num是数字矩阵,txt是文字部分的元胞数组,raw是所有数据的元胞数组
代码运行结果如下,
num是一个12行3列的矩阵,表示提取出的数字的矩阵;txt是一个13行3列的元胞数组,表示提取出的文字的元胞数组;raw是一个13行3列的元胞数组,表示提取出的所有数据的元胞数组:
04 | 导入Sheet1部分数据
现在想导入Sheet1中如下所示的部分数据,5的位置是A6,16的位置是C11。
可以使用如下代码导入上述数据:
filename = '例子.xlsx'; %文件名
[num,txt,raw] = xlsread(filename,'A6:C11'); %A6是左上角数据位置,C11是右下角数据位置,num是数字矩阵,txt是文字部分的元胞数组,raw是所有数据的元胞数组
代码运行结果如下,
num是一个6行3列的矩阵,表示提取出的数字的矩阵;txt是一个0行0列的元胞数组,表示提取出的文字的元胞数组;raw是一个6行3列的元胞数组,表示提取出的所有数据的元胞数组:
二 | excel表格中有多个Sheet
现在excel表格中有3个Sheet,分别为Sheet1、Sheet2和Sheet3。
现在想导入Sheet2中如下部分的数据,15的位置是A4,26的位置是C9:
可以使用如下代码导入上述数据,相较于之前的代码,在filename后增加了'Sheet2',表示提取哪一个Sheet的数据:
filename = '例子.xlsx'; %文件名
[num,txt,raw] = xlsread(filename,'Sheet2','A4:C9'); %A4是左上角数据位置,C9是右下角数据位置,num是数字矩阵,txt是文字部分的元胞数组,raw是所有数据的元胞数组
代码运行结果如下,
num是一个6行3列的矩阵,表示提取出的数字的矩阵;txt是一个0行0列的元胞数组,表示提取出的文字的元胞数组;raw是一个6行3列的元胞数组,表示提取出的所有数据的元胞数组:
更多资源尽在:优化算法交流地
往期精选
- 号内搜索
- 旅行商问题(TSP)合辑
- MATLAB导入txt文件技巧大全
遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解
车辆路径问题(VRP)合集
遗传算法求解0-1背包问题(附matlab源代码) - 模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解
- 多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)
- 多目标优化 | NSGA-II进阶教程(全网首个三目标优化教程)
- 机器学习 | 基于遗传算法的BP神经网络优化算法(附MATLAB代码)
- 遗传算法求解车间调度问题(附MATLAB代码)
- 多目标优化 | NSGA-II
- word转换为pdf后图片失真的解决办法(全网首发)
- 机器学习 | 简单实现Bp神经网络
- 二维装箱问题之BL法修正版(附MATLAB代码)
快速入门文献管理软件-EndNote X9 - 最小二乘法(附MATLAB代码)
NSGA-II多目标优化算法讲解(附MATLAB代码) - 基于人工势场法的机器人二维路径规划(附MATLAB代码)
- 基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)
蚁群算法通俗讲解(附MATLAB代码)
混合粒子群算法通俗讲解(附MATLAB代码)