matlab自动读取目录下的所有文件数据,并保存为.mat文件

工科生利用matlab读取实验数据应该是一个必备技能了,最常见的做法就是直接用load命令加载对应的文件,但是使用load命令是非常不方便的,原因有二:
一、load命令只能读取数据规格相同的文件,但是实验数据前面往往有一些文字描述,读取会发生错误,要想读取数据就要先手动删除这些文字描述再读取,这是很不方便的。如下图,(前23行是本次数据的相关字符信息)在这里插入图片描述
二、当读取文件数量较多时,load命令不能设置自动读取所有文件,需要手动输入每个文件名,效率较低。如下图所示,
在这里插入图片描述
以上图文件为例,为了提高数据分析效率,直接用fopen来打开所有文件,可从指定行开始读取数据、自动读取所有文件并保存为.mat文件。main文件代码如下:

clc
clear
Files=dir('20201109/*.lvm');                               %读取目录下所有文件的信息
for ii=1:length(Files)
    filename=[Files(ii,1).folder, '\', Files(ii,1).name];  %文件的路径
    fid=fopen(filename,'r');                               %打开文件
    t=textscan(fid,'%s %s %s %s','headerlines',23);        %跳过前23行,从第24行开始读取数据,并保存为字符串格式
    fclose(fid);                                           %关闭文件

    time = str2num(char(t{1,1}));                          %将字符格式转换为数字格式
    Fx   = str2num(char(t{1,2}));
    Fy   = str2num(char(t{1,3}));
    Fz   = str2num(char(t{1,4}));

    mat_name=strsplit(Files(ii,1).name,'.');               %将文件名的字符串拆分开
    name = strcat('cutting_force','_',mat_name{1,1});      %重组切削力数据文件名
    save(name,'time','Fx','Fy','Fz');                      %保存切削力数据为.mat文件
end

运行后,会自动生成t2_1.mat~t2_5.mat几个文件,如下图所示:
在这里插入图片描述
每个文件中都保存着读取的time、Fx、Fy、Fz数据,如下:
在这里插入图片描述
同时,工作区可以看到打开最后一个文件(即t2_5.lvm)后的变量值,如下:
在这里插入图片描述
其中,
Files的值为:
在这里插入图片描述
filename的值为:’F:\插铣资料\工艺参数优化程序\test\20201109\t2_5.lvm’;
mat_name的值为:‘t2_5’和’lvm’;


版权声明:本文为weixin_49199646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。