【Matlab初学】批量读取命名无规则的txt文件中的数据,并小波变换保存大量图片

思路为:用dir找到文件路径,将文件名保存到Name中,通过循环分别用fopen打开文件后为cell,将cell变为矩阵后进行数据处理,最后得出对应的图片,按序号命名后分别保存。

其中遇到的问题就是上一个循环留下的数据会影响cell2mat,所以要清楚部分变量

clc;close all;clear all;format long;
Name=dir('D:\2022\07\*.txt');  
dircell=struct2cell(Name)';
filenames=dircell(:,1);
for num=1:29    %共29个文件需要读
   file=fopen(cell2mat(filenames(num,1)));%打开对应的文件
   origndata=textscan(file,'%f %f %f %f %f %f %f','Headerlines',50);  %这里跟自己的txt文件对应
    fclose(file);
  
  for i=1:1:7 
    data(:,i)=cell2mat(origndata(i));  %将cell转换为矩阵
   end

%数据进行小波变换
for i=1:7
   [thr,sorh,deepapp,crit]=ddencmp('den','wp',data(:,i));
   [x1(:,i),~,~,~]=wpdencmp(data(:,i),sorh,7,'sym6',crit,thr,deepapp);  %处理后的数据x1
end
 
  time=****;%这里自己填,为x轴数据
  A=figure(num); 
  subplot(121)
  plot(time,data,'b');
  subplot(122)
  plot(time,x1,'k');


%保存指定图片到指定位置
path="D:\20220713\2022";
% 用stracat函数生成 “path”+“自动编号的图片名”+“文件格式后缀”
str(num)=strcat(path,'jpg',num2str(num),'.jpg');
saveas(A,str(num));

clearvars -except Name dircell filenames num    %需要把多余的变量删去不然会影响下一个循环
end

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