文章介绍了在MATLAB中处理带有表头的TXT文件的三种方法:fopen搭配textscan、impordata导入数据和load函数。通过比较,推荐使用impordata,因为它能直接导入数据矩阵。对于无表头的文件,load函数可直接处理。对于逗号分隔的数据,impordata和load能正确识别,而textscan可能出错。
摘要生成于
,由 DeepSeek-R1 满血版支持,
最近需要使用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如下:
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直接报错
调用不存在表头的data1.txt时 ,关注workspace的信息
1、data1为9x1的cell,3x3的数据变成9x1
2、使用importdata时,输出的data2报错,报错点在data2 = datatable.data;
原因在于此时datatable不再是结构体,直接是数据矩阵,不存在data的子集,调用出错;
修改成data2 = datatable;输出3x3的矩阵,或者直接拿datatable进行处理
3、使用load的时候,输出3x3的矩阵
读取以逗号为分隔的data2.txt
读取txt时,分隔符问题:仿真软件生成txt或是csv文件,一般以空格和逗号作为数据之间的分隔,三种方式读取带逗号的txt时:
textscan则不能正确读取数据
importdata和load识别逗号,正确读取数据
MATLAB
如何
导入
.
txt
文本
在
matlab
GUI的学习中,需要
导入
各种格式的.
txt
文件
,心血来潮想总结一波。
首先,利用uigetfile选择
文件
位置,代码命令如下:
[filename, pathname] = uigetfile({'*.xls;';'*.
txt
';'*.xlsx;'; }, '
导入
数据',...
'MultiSelect','off'); % 不允许同时选择多个
文件
if isequal(filename,0)
有
三种
常见的
方式
:
1、 A=importdata('filename.
txt
') 则A就是n*m的矩阵了;
2、load filename.
txt
这样也是载入n*m的矩阵;
3、在
MATLAB
的work
文件
夹下,选择想要
导入
的数据,用右键importdata,根据向导一步一步
导入
即可。
b=reshape(filename,N,N)