matlab导入txt,txt存在header情况下,三种方式的对比

       最近需要使用matlab对大量txt文件进行处理,现有拿到的m文件是使用load函数导入txt,因此每次需要把txt的表头删除后,再导入matlab处理,心累有木有!!!

       摸索总结使用以下3种方式调用data.txt(存在表头)data1.txt(不存在表头)data2.txt(逗号分隔),m程序的目标是计算每列数据的dnl的max和min值

        1.fopen搭配textscan

        2.利用impordata导入数据

        3.采用load函数

        通过比较,推荐使用方法2:利用impordata导入数据 

data.txt,data1.txt和data2.txt如下:

matlab导入txt,txt存在header情况下,三种方式的对比_第1张图片

  M程序如下:

%1.fopen搭配textscan
file1=fullfile('data.txt');      % 导入.txt文件
f=fopen(file1);    %以只读模式打开混合格式文本文件
data1=textscan(f,'%s'); 
%2.利用impordata导入数据
datatable = importdata('data.txt'); %加载txt数据(只导入数据)
data2 = datatable.data;  
%3.采用load函数
file2=fullfile('data.txt');       %data1 has no head
data3=load(file2) ;

调用存在表头的data.txt时 ,关注workspace的信息

1、data1为12x1的cell,以空格分割元素,不方便矩阵运算,且前面几个数据不能用,还要处理

2、使用importdata时,输出的data2为3x3的矩阵,此时的中间量datatable是一个结构体,包含data、textdata和colheader

3、使用load的时候,matlab直接报错

matlab导入txt,txt存在header情况下,三种方式的对比_第2张图片

调用不存在表头的data1.txt时 ,关注workspace的信息 

1、data1为9x1的cell,3x3的数据变成9x1

2、使用importdata时,输出的data2报错,报错点在data2 = datatable.data;原因在于此时datatable不再是结构体,直接是数据矩阵,不存在data的子集,调用出错;

      修改成data2 = datatable;输出3x3的矩阵,或者直接拿datatable进行处理

3、使用load的时候,输出3x3的矩阵

matlab导入txt,txt存在header情况下,三种方式的对比_第3张图片

 读取以逗号为分隔的data2.txt 

       读取txt时,分隔符问题:仿真软件生成txt或是csv文件,一般以空格和逗号作为数据之间的分隔,三种方式读取带逗号的txt时:

        textscan则不能正确读取数据

        importdata和load识别逗号,正确读取数据

matlab导入txt,txt存在header情况下,三种方式的对比_第4张图片

 

 

 

 

 

你可能感兴趣的:(matlab基础学习,matlab,前端)