MATLAB导入txt文件技巧大全 您所在的位置:网站首页 matlab导入工具包 MATLAB导入txt文件技巧大全

MATLAB导入txt文件技巧大全

2023-04-13 02:42| 来源: 网络整理| 查看: 265

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

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

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

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

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

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

present01=importdata('present01.txt');

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

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

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

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

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

present02=importdata('present02.txt');

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

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

filename='present02.txt'; %文件名 delimiterIn = ' '; %列分隔符 headerlinesIn = 2; %读取从第 headerlinesIn+1 行开始的数值数据 present02=importdata(filename,delimiterIn,headerlinesIn); dataset=present02.data; %导出的3行以后的数据,即3行4列的矩阵 parameters=present02.textdata; %导出的2行以前的数据,即2行1列的元胞数组

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

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

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

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

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

filename='present02.txt'; %文件名 delimiterIn = ' '; %列分隔符 headerlinesIn = 5; %读取从第 headerlinesIn+1 行开始的数值数据 present02=importdata(filename,delimiterIn,headerlinesIn);

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

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

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

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

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

filename = 'c101.txt'; %文件名 delimiterIn = ' '; %列分隔符 headerlinesIn =9; %读取从第 headerlinesIn+1 行开始的数值数据 c101=importdata(filename,delimiterIn,headerlinesIn); row4=c101.textdata{4,1}; len=length(row4); dataset=c101.data; %导出的10行以后的数据,即101行7列的矩阵 parameters=c101.textdata; %导出的9行以前的数据,即7行1列的元胞数组

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

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

往期精彩

号内搜索遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解车辆路径问题(VRP)合集遗传算法求解0-1背包问题(附matlab源代码)模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)多目标优化 | NSGA-II进阶教程(全网首个三目标优化教程)机器学习 | 基于遗传算法的BP神经网络优化算法(附MATLAB代码)遗传算法求解车间调度问题(附MATLAB代码)多目标优化 | NSGA-IIword转换为pdf后图片失真的解决办法(全网首发)机器学习 | 简单实现Bp神经网络二维装箱问题之BL法修正版(附MATLAB代码)快速入门文献管理软件-EndNote X9最小二乘法(附MATLAB代码)NSGA-II多目标优化算法讲解(附MATLAB代码)基于人工势场法的机器人二维路径规划(附MATLAB代码)基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)蚁群算法通俗讲解(附MATLAB代码)混合粒子群算法通俗讲解(附MATLAB代码)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有