matlab 从 excel读取 日期_MATLAB导入txt文件技巧大全

在使用MATLAB的时候,各位一定会遇到过导入数据的烦恼。如果需要导入的数据其数据量巨大的话,那么在MATLAB编辑器中将这些数据复制粘贴进来,显然会在编辑器中占据巨大的篇幅。那么究竟有没有一个简洁的办法不需要将数据复制粘贴到MATLAB编辑器中,而是直接使用MATLAB自带的一些函数可以直接将这些数据导入进来呢?一般来说储存这些数据的文件有两种形式:1)txt文件;2)excel表格

针对这两种类型的文件,需要使用两个不同的函数,今天主要讲解导入txt文件的方法。

就导入txt文件来说,我个人习惯使用importdata这个函数。


01 | 导入全是数字类型的txt文件(一)

如果导入的txt文件中,储存的数据全是数字类型的,且同一行的两个数字之间使用空格或者制表符进行分隔。这种形式的txt文件如下所示。

7098b211cb3cd19f58caecb8ab1111e2.png

储存这种形式数据的txt文件直接使用如下代码即可。

present01

在MATLAB运行之后的结果如下:

e6867eaa7694d2ca1781aad8ddce7534.png

02 | 导入全是数字类型的txt文件(二)

各位小伙伴可能会有疑问,如果我的数据不像刚才给出的数据那么规整,还能继续使用上面的代码了吗?

如果txt文件储存如下的数据:

d88cf6ca2d60e7103b17450e75eb4133.png

很明显这个txt文件,第一行只有1,第二行有2和3,第三行有4、5、6和7,第四行有8、9、10和11,第五行有12、13、14和15。如果我们继续使用上面的代码,看看能否成功导入数据。

present02

在MATLAB运行之后结果如下,是一个15行1列的矩阵,这个很明显和我们想要的形式不太一样。

fa8035bca7f9d1572110fce5f00b7627.png

各位可以发现前两行的数据个数与后三行的数据个数不同,所以在实际导入的时候需要分开导入,这时可以使用如下代码导入present02.txt文件。

filename

filename是文件名,delimiterIn是列分隔符,也就是同一行的两个数据之间是如何分隔的,可以是空格,也可以是制表符,也可以是逗号。headerlinesIn表示读取从第 headerlinesIn+1 行开始的数值数据,因为前两行的数据个数与后三行的数据个数不同,所以这里headerlinesIn = 2,即从读取从第 3行开始的数值数据。在MATLAB运行之后的结果如下,是一个结构体,其中包括一个3行4列的矩阵data,和一个2行1列的元胞数组textdata。使用变量dataset储存这个3行4列的矩阵,使用parameters储存这个2行1列的元胞数组。

45d0ebfe28298340cf40c02dfb840bcb.png

14feafe08250b04d37bf6ab66b73694a.png

027f8e140af8611693435d9067a16466.png

8653415d73316f47eb1ac38449454f47.png

23c5524c4c38832ba5acd5fdf5cb5fbd.png

其中这个3行4列的矩阵data就是后三行的数据,这个2行1列的元胞数组textdata就是前两行的数据。

其实在MATLAB中建议不到万不得已的时候尽量不用元胞数组cell,因为元胞数组在处理数据不方便。但这个txt文件由于每行的数据个数不同,所以我们没有办法将其导入为一个5行4列的矩阵,我们才万不得已将前两行数据导入为元胞数组后三行数据导入为3行4列的矩阵


03 | 导入全是数字类型的txt文件(二)拓展

其实各位小伙伴可以尝试一下,在上述代码中将headerlinesIn设为5,看看是导入的结果是怎么样的?

filename

在MATLAB运行之后的结果如下,是一个5行1列的元胞数组。

c50c1b514d74cbd132eff0329311ff6a.png

这里各位小伙伴可以思考一下,因为一共只有5行数据,而又将headerlinesIn设为5,所以此时读取从第6行开始的数值数据,这句话包含两层意思:1)读取从第6行开始的数值数据,在present02.txt文件中第6行没有数据,所以没有将数据以矩阵的形式导入进来。2)读取第5行之前的非数值数据,然后用元胞数组cell的形式进行储存。


04 | 导入数字和字母混合类型的txt文件

比如说现在导入标准的solomon测试算例,前8行中既有数字又有字母,且每行数据个数不同。

6b8bf6ed585318b57211b87a4703d3ce.png

观察发现,第10行以后的数据是一个101行7列的规整的数据。因此,可以将headerlinesIn设为9,具体的代码如下:

filename 

在MATLAB运行之后的结果如下:

5eae45b34670b1d8bbadbf9111c7aa0f.png

0b90403f91a09e71b9f4bba4c8b3784f.png

302410594cc961dcd2b8a07beccd8fc1.png

更多资源尽在:优化算法交流地

往期精彩

  • 号内搜索
  • 遗传算法(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代码)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值