精华内容
下载资源
问答
  • 使用Matlab编写的小程序,用于批量读取Excel内容。本程序中用于读取特定字符的内容,可自行根据需要更改
  • 运用MATLAB批量读取excel表格

    千次阅读 多人点赞 2020-05-25 23:53:44
    运用MATLAB批量读取excel表格 **运用MATLAB批量读取excel表格****需要待读取的excel表格****Step1:读取数据的路径,通过dir函数获取特定地址文件夹中的文件列表。****Step2:循环读取每一个文件的数据,并将其存到...

    运用MATLAB批量读取excel表格

    需要待读取的excel表格

    在这里插入图片描述

    Step1:读取数据的路径,通过dir函数获取特定地址文件夹中的文件列表。

    path  = 'C:\Users\Administrator\Desktop\';    %此处为需要读取的文件所在路径
    Filesname = dir(strcat(path,'*.xlsx'));                     %找到当前路径文件夹下的以.xlsx为后缀的文件名,strcat是横向连接字符的函数
    

    path是文件夹的路径,strcat是横向连接字符的函数,path为需要批量读取的excel文件的所在路径。
    Filesname 为文件路径下的每个xlsx文件的地址和名称。

    Step2:循环读取每一个文件的数据,并将其存到一个根据循环命名的与原始数据大小一致的二维矩阵中。

    Length = length(Filesname );    %计算文件夹里xls文档的个数
    for i = 1:Length               %批量读取文件的内容并保存
        xls_data = xlsread(strcat(path,Filesname (i).name));      
        file_name = Filesname ( i ).name;   
        [m,n] = size(xls_data);       %获取读取的单个excel的内容大小
        eval(['T',num2str(‘i’),'=','xls_data']);
    end
    

    应用length函数获取数组长度(即需要批量处理的excel文件的个数)。
    xlsread为MATLAB中excel文件的读取函数,eval函数的功能是将字符串转换为matlab可执行语句。

    Step3:完整代码

    path  = 'C:\Users\Administrator\Desktop\';  %此处文件地址改为需要的文件夹路径
    Filesname = dir(strcat(path,'*.xlsx')); %找到当前路径文件夹下的以.xlsx为后缀的文件名,strcat是横向连接字符的函数
    Length = length(Filesname );    %计算文件夹里xls文档的个数
    for i = 1:Length        %批量读取文件的内容并保存
        xls_data = xlsread(strcat(path,Filesname (i).name));
        file_name = Filesname (i).name;
        [m,n] = size(xls_data);
        eval( ['T',num2str(i),'=','xls_data'] );
    end
    
    

    代码仅供参考,希望能帮助到大家!!

    展开全文
  • 最近需要处理大量数据,因为上位机原因,总是保存多个Excel文件,所以需要使用MATLAB批量读取Excel文件的方法,接下来就简单记录一下过程,供日后学习和大家参考。 如下图,是保存在“D:\饮水机\水箱\ADRC_ysm_...

    最近需要处理大量数据,因为上位机原因,总是保存多个Excel文件,所以需要使用MATLAB批量读取Excel文件的方法,接下来就简单记录一下过程,供日后学习和大家参考。

    如下图,是保存在“D:\饮水机\水箱\ADRC_ysm_lower\论文\610”路径下的Excel文件,文件里面数据以“文本”方式存储,存储“数值”数据的文件方法类似。

    批量读取Excel“文本”文件的代码如下:

    excel_path=  'D:\饮水机\水箱\ADRC_ysm_lower\论文\610\';   %文件夹路径 
    path_list = dir(strcat(excel_path,'*.xls'));          
    %dir 函数 列出当前目录下所有子文件夹和文件%
    list_num = length(path_list);
    for i=1:list_num
       [txt,num,raw] = xlsread([excel_path,path_list(i).name]);
       [tm,tn]=size(num);
       numT(1:tm,1:tn,i)=num;
    end

    numT保存的部分结果如下:

    如果需要处理数据,直接使用numT的数据就行。

    展开全文
  • 一个文件夹有三百多多个.csv格式的表格,我需要读取所有的表格,提取每一个表格的第7列,然后将所有表格的第七列的数据依次排列整合在一个表格中。 下图为处理前的文件的一部分 下面是实现这些功能的Matlab代码。我...

    一个文件夹有三百多多个.csv格式的表格,我需要读取所有的表格,提取每一个表格的第7列,然后将所有表格的第七列的数据依次排列整合在一个表格中。

    下图为处理前的文件的一部分

    这是处理前的数据的一部分

    下面是实现这些功能的Matlab代码。我用的Matlab版本是2020版的。有些代码需要根据自己实际的需要进行更改,比如如果你读取的文件格式是.xls就可以把第五行的.csv改成.xls。或者你希望输出文件名称为别的名字,你可以把代码中所有的C4都换掉。或者你不需要只保留第七列的数据,你要保留所有的数据,就可以把相关的代码删掉后运行

    clear;
    close all;
    clc;
    
    Files=dir('*.csv'); %读取当前文件夹里所有.csv的文件,且把文件名按顺序读取在Files中
    
    n=length(Files); %n表示Files中有多少个文件
    x=Files(1).name; %x表示Files中的第一个文件的名字
    z=importdata(x); %读取第一个.csv文件且命名为z
    z=z(:,6);%因为只需要第七列的数据,所以用这行代码把z变成只有第七列数据的表格
    C4=z;%让C4和z相等,z会不断变化,C4是最终文件
    for i=1:n-1
        
        x=Files(i+1).name; %依次读取后面Files的每个名字 
        z=importdata(x); %依次读取文件夹中.csv的文件
        z=z(:,6); %从z中提取我所需要的第7列的数据
        C4=[C4;z];% 把z那列的数据接在C4那列的下面
        
        %下面两行代码用于在命令窗口显示代码运行的进度,因为有时候文件太多处理的时间长,这个可以不要
        Dis=strcat('当前进度 ',int2str(i/n*100),'%');
        disp(Dis)
        
        %循环这个步骤直到所有的.csv文件都集成在C4中
    end
    
    save C4 %保存C4为C4.mat到当前文件夹
    

    下面是最后生成的.mat格式文件,这个文件整合了所有的数据,有七千多万行…
    C4mat文件

    展开全文
  • matlab批量处理excel(CSV)文件数据

    万次阅读 多人点赞 2019-01-29 21:51:25
    今天是2019-1-29,参加完2019年美国大学生数学建模竞赛,小伙伴都回家了,就我一个人在寝室,太无聊了,就把在比赛中遇到的excel批处理,写一下思路(ps:其实我在比赛中利用的是SQLServer数据库和matlab相结合的数据...

    微信公众号:好玩的matlab

    数据处理可以找我帮忙QQ:2377389590

    无定金,远程讲解+数据源码+处理数据

    今天是2019-1-29,参加完2019年美国大学生数学建模竞赛,小伙伴都回家了,就我一个人在寝室,太无聊了,就把在比赛中遇到的excel批处理,写一下思路(ps:其实我在比赛中 利用的是SQLServer数据库和matlab相结合的数据处理方法,但是一般情况下遇到的都是matlab对excel数据批处理,所以降低要求写了matlab对excel数据批处理,此思路都是小编凭感觉自己摸索出来的,如有错误欢迎指出)。

              今天介绍怎么批量读取excel文件的数据,首选我把excel文件名称分为以下几种情况(全凭个人经验,比如读取图片文件,txt文件思路大同小异,希望我的思路起到抛砖引玉的效果)

    三维数组存储方法

    1. 有规律的数值型名字

    
    %date:2019-01-29-夜晚
    %author:猪猪侠
    %邮箱:2377389590@qq.com
    clear %清除变量
    clc%清屏
    filename=dir('*.xlsx');%获取全部的.xlsx文件
    n=length(filename);%文件数目
    for i=2010:2010+n-1%也就是2010:2014
     %思路:声明三维数组储存数据
     %[int2str(i),'.xlsx']是为了遍历excel文件
    [Num(:,:,i-2010+1),TxT(:,:,i-2010+1),Raw(:,:,i-2010+1)]=xlsread([int2str(i),'.xlsx'])
    end

    运行结果:

    2. 有规律的数值型+相同文本的名字

    %date:2019-01-29-夜晚
    %author:猪猪侠
    %邮箱:2377389590@qq.com
     
    clear %清除变量
    clc%清屏
    filename=dir('*.xlsx');%获取全部的.xlsx文件
    n=length(filename);%文件数目
     
    for i=2015:2015+n-1%也就是2015:2019
       %思路:声明三维数组储存数据
       %['我是',int2str(i),'.xlsx']拼凑excel名称的字符串是为了遍历excel文件
       [Num(:,:,i-2015+1),TxT(:,:,i-2015+1),Raw(:,:,i-2015+1)]=xlsread(['我是',int2str(i),'.xlsx'])
    end
    

    运行结果

    3. 没有规律的文本的名字

    dir函数可以有调用方式为:

    dir('.') 列出当前目录下所有子文件夹和文件

    dir('D:\Matlab') 列出指定目录下所有子文件夹和文件

    dir('*.xlsx') 列出当前目录下符合正则表达式的文件夹和文件

    得到的为结构体数组每个元素都是如下形式的结构体:

            name    -- filename

            date    -- modification date

            bytes   -- number of bytes allocated to the file

            isdir   -- 1 if name is a directory and 0 if not

            datenum -- modification date as a MATLAB serial date number

    %date:2019-01-29-夜晚
    %author:猪猪侠
    %邮箱:2377389590@qq.com
    clear %清除变量
    clc%清屏
    filename=dir('*.xlsx');%获取全部的.xlsx文件
    n=length(filename);%文件数目
    for i=1:n
       name=filename(i).name;
       [Num(:,:,i),Txt(:,:,i),dict(:,:,i)]=xlsread(['',name,''])%批量读取数据
    end
    

    源码:

    链接:https://pan.baidu.com/s/1iat-mzAAEmCdK4uPR0GjXQ 
    提取码:yr2c 

     matlab对excel数据批处理程序改进

    2019-8-7今天是七夕节也是小编的生日,大清早小编在朋友圈吃饱了狗粮,总感觉要写点什么,抽空写写博客散散心。没啥心情学习,高兴的是我收到了QQ邮箱的祝福

    坚持人丑多读书的宗旨继续写自己的代码,改进excel批量读入的方法,废话少说思路和代码如下

    1.无规律的excel文件名批处理:

    思路:dir(‘*.格式’)一股脑读入所有相同的格式,然后对filename的结构体进行操作(具体过程往上翻,excel无规律的处理有dir函数属性的详细介绍)

    无论文件名咋样的,爱咋样咋样,对于所有excel进行读入,具有普适性的文件,文件如下

    代码如下 

    %author:zhuweijie
    %email:2377389590@qq.com
    %date:2019-8-7-早
    %对于的excel:无论文件名咋样的,爱咋样咋样,对于所有excel进行读入,具有普适性
    clc,clear;
    s=what;
    p=s.path;%当前文件夹路径
    filename=dir([p,'\','*.xlsx']);%拼接路径,读入all文件名
    mydata=cell(1,length(filename));%初始文件元胞数组
    for i=1:length(filename)
         mydata{i}=xlsread(filename(i).name);%导入数据
    end

    运行效果:成功读入文件和数据 

     

    2.有规律的excel文件名批处理: 

     思路:1、构造文件名

                2、路径和文件名字符串拼接

    
    %author:zhuweijie
    %email:2377389590@qq.com
    %date:2019-8-7-早
    %对于的excel:文件名+序号
    clc,clear
    s=what;
    p=s.path;%当前文件夹路径
    filename=dir([p,'\','*.xlsx']);%拼接路径,读入all文件名
    filenum=length(filename);%文件数目
    mydata=cell(1,filenum);%初始文件元胞数组
    for k=1:filenum
        filename=sprintf('data%02d.xlsx',k);
        %构造文件名,注:文件名的读入也可以利用字符串拼接,循环读入
        %对于data1.xlsx……data10.xlsx文件构造文件名为:sprintf('data%d.xlsx',k);
        mydata{k}=xlsread(filename);%导入数据
    end
    

     运行效果:可以循环读入相应的文件名

    读入五个excel文件的数据

    注意:苹果、Linux系统的电脑运行实战案例1、2、3、4……程序会出错,给出改进方法:

    1、matlab写的路径,  左斜杠要改成右斜杠,

    2、xlsread要改成readmatrix,

    3、xlswrite改成writecell或者writematrix 具体情况自己help 

    实战案例1

    2019-5-20今天没事突然想继续更新这篇博客

    我首先介绍我在数据处理遇到的问题

    1.我这里有93个.csv文件,要按照需求批量处理csv文件数据,然后批量输出excel文件,且文件名不变。

    2.每个csv文件如下图所示,第一列的数据和第二列的“ ;”前的数据组成数据,第二列“ ;”后面数据和第三列数据按照要求组成数据

    比如:6025和57组成6025.57,

              13和290组成13+290/1000=13.29

              剩下数据以此规律类推;

    3.每一个数据表会有*******作为分割线,分割线前面的数据为需要按照以上方法处理的数据,分割线位置是随机变化的

    难点1.字符串拼接问题(主要涉及num2str,cell2mat,chr,str2double ,find ,isnan等函数)

              2.数据文件的批量读入和输出

              3. 异常处理try......catch

    代码如下: 

    
    %author:猪猪侠 
    %E-mail:2377389590@qq.com
    clear %清除变量
    clc%清屏
    s=what;
    p=s.path; %当前目录
    filename=dir([p,'\data\','*.csv']);%获取data文件夹下面全部的.csv文件
    n=length(filename);%文件数目
    for i=1:n
       name=filename(i).name;%文件 名称遍历循环
       [Num,Txt,Raw]=xlsread([p,'\data\',name]);%读取数据
       index=find(isnan(Num(:,1)));
       %% ---------对特殊数据表进行处理-----------------------------------------------------------------------------
       try%异常出错处理
            chr=cell2mat(Raw(1:index(1,1)-1,2));
       catch 
            data1=ones(1,index(1,1)-1);%声明空间
            data2=ones(1,index(1,1)-1);%声明空间
            for j=1:index(1,1)-1
                data1(j)=str2double([num2str(cell2mat(Raw(j,1))),'.',chr(j,1:2)]); %对第一列数据和第二列数据进行字符串拼接
                data2(j)=str2double(chr(j,8:9))+str2double(num2str(cell2mat(Raw((j),3))/1000));%对第2列数据和第3列数据进行字符串拼接
            end
            data=[data1',data2'];%拼接后的数据
            xlswrite([p,'\result\',strtok(name,'.'),'.xlsx'],data)%输出特殊数据表
       end
       %% ---------对符合规范的数据表进行处理-------------------------------------------------------------------------
            data1=ones(1,index(1,1)-1);
            data2=ones(1,index(1,1)-1);
            for j=1:index(1,1)-1
                data1(j)=str2double([num2str(cell2mat(Raw(j,1))),'.',chr(j,1:2)]); 
                data2(j)=str2double(chr(j,8:9))+str2double(num2str(cell2mat(Raw((j),3))/1000));
            end
            data=[data1',data2'];
            xlswrite([p,'\result\',strtok(name,'.'),'.xlsx'],data)
    end
    

    数据我已经上传群里欢迎加群获取 

    实战案例2,

    前几天在家陪老舅钓鱼,没掉几条,备受打击,所以今天不去了,2019-8-16今天没事干所以继续更新这篇博客,思路如下。

         我这里有三个Excel数据文件,文件名称为无序没有规律的

           要获取三个Excel文件Data表单的全部数据,拼接在一起,然后共用一个表头,经过分析三个Data数据的列数是一样的,不一样的是行数,这样难点就是怎么动态的获取行数,然后再拼接在一起。

    代码如下:

    %author:zhuweijie
    %email:2377389590@qq.com
    %data:2019-08-15
    clc,clear;
    s=what;
    p=s.path;%路径
    filename=dir([p,'\data\','*.xlsx']);%总文件名
    n=length(filename);%文件个数
    for i=1:n
        name=filename(i).name;%单个文件名
        [Num,TxT,Raw]=xlsread([p,'\data\',name],'data');%读入数据
        [row(i),col(i)]=size(Raw);%动态获取数据维度大小
        Row=row-2;%去除表头
        data(1,:)=Raw(2,:);%设置表头
        if 1==i
           data(2:sum(Row(i))+1,:)=Raw(3:end,:);%如果第一次(i=1),则从第二行开始到第一个数据维度+1
        else
           data(sum(Row(1:i-1))+2:sum(Row(1:i))+1,:)=Raw(3:end,:);%如果i>1,从第i-1次数据的下一行(也就是+1)开始到i+1行
        end
        %ps:i=1的if语句可以直接去掉也可以,为了读者方便理解,所以没有删
    end
    xlswrite('result.xlsx',data);%输出
    

    代码已经上传群文件

    实战案例3,

    今天是2019-12-28,无聊帮研究生学姐写写代码……废话少说,要求如下

    要求:

    每个excel里面都是要2428A这一列,我看了几个都是ATR 这一列。

    92个excel弄成92列,放在一个excel里面

    感谢猪猪侠,哈哈哈

    代码如下:

    %author:猪猪侠
    %email:2377389590@qq.com
    clc;clear;
    s=what;
    p=s.path;
    file=dir([p,'\data\','*.csv']);%拼接路径,读入all文件名
    % delete([p,'\result\','data.xlsx'])
    filenum=length(file);%文件数目
    data=cell(361,92);
    for i=1:filenum
        name=file(i).name;%文件 名称遍历循环
        [Num,Txt,Raw]=xlsread([p,'\data\',name]);%读取数据
        data(:,i)=Raw(:,1214);
    end
    xlswrite([p,'\result\','data.xlsx'],data)%输出数据表

    完整版数据可以百度云下载

    链接:https://pan.baidu.com/s/1shhVYq9DUre3Nm7rG3ZXrw 
    提取码:kxy9

    实战 案例4

    要求就是根据左边数据处理成右边数据

    代码如下:

     
    %author:猪猪侠 
    %E-mail:2377389590@qq.com
    clear %清除变量
    clc%清屏
    filename=dir([pwd,'\data\','*.csv']);%获取data文件夹下面全部的.csv文件
    n=length(filename);%文件数目
    for i=1:n
       name=filename(i).name;%文件 名称遍历循环
       [Num,Txt,Raw]=xlsread([pwd,'\data\',name]);%读取数据
       [row,col]=size(Raw);
       for j=1:row%每一个表单中行数
          index=cell2mat(strfind(Raw(j,1),' '));%strfind(S1,S2)在S1查找S2
              char_Raw=char(Raw(j,:));
              data(j,:)=[   cellstr(char_Raw( 1:(index(1)-1) )),   cellstr(char_Raw( (index(1)+1):index(2))),...
                  cellstr(char_Raw( (index(2)+1):index(3))),cellstr(char_Raw( (index(3)+1):index(4))),...
                  cellstr(char_Raw( (index(4)+1):length(char_Raw)))]
          clear index
       end
       xlswrite([pwd,'\result\',strtok(name,'.'),'.xlsx'],data)
    end

    源码 数据已经上传 群文件,自己获取

    实战 案例5

    有120个文件上下拼接一个整体数据

    其中排序函数:sort_nat

    win10+matlab2020b +office2019环境 

    tic
    clc,clear;
    warning off
    mkdir([pwd,'\result'])
    filelist=dir([pwd,'\data\','*.csv']);%总文件名
    n=length(filelist);%文件个数
    namelist=cell(1,n);
    %排序
    for j=1:n
        namelist{j}=filelist(j).name; %排序
    end 
    sortname=sort_nat(namelist);
    for i=1:n
        [Num,TxT,Raw]=xlsread([pwd,'\data\',char(sortname(i))]);%读入数据
        [row(i),col(i)]=size(Num);%动态获取数据维度大小
        Row=row;%去除表头
        if 1==i
           data(1:sum(Row(i)),:)=Raw(2:end,:);
        else
           data(sum(Row(1:i-1))+1:sum(Row(1:i)),:)=Raw(2:end,:);
        end
    end
    Data=[TxT;data];
    xlswrite([pwd,'\result\','result.xlsx'],Data);%输出
    toc

    ios电脑+matlab2019b+office2019

    tic
    clc,clear;
    warning off
    mkdir([pwd,'\result'])
    filelist=dir([pwd,'\data\','*.csv']);%总文件名
    n=length(filelist);%文件个数
    namelist=cell(1,n);
    %排序
    for j=1:n
        namelist{j}=filelist(j).name; %排序
    end 
    sortname=sort_nat(namelist);
    
    for i=1:n
        Num=readmatrix([pwd,'\data\',char(sortname(i))]);%读入数据
        [row(i),col(i)]=size(Num);%动态获取数据维度大小
        Row=row;%去除表头
        if 1==i
           data(1:sum(Row(i)),:)=Num(1:end,:);
        else
           data(sum(Row(1:i-1))+1:sum(Row(1:i)),:)=Num(1:end,:);
        end
    end
    TxT={'Time','id','mass','v:0','v:1','v:2','radius','Points:0','Points:1','Points:2'};
    Data=[TxT;num2cell(data)];
    writecell(Data,[pwd,'\result\','result.xlsx']);%输出
    toc

    实战案例5的数据+源码可以加微信号:idmatlab领取

    实战案例6

    今天是2021年6月24,继续更新博客

    要求如下

    数据文件是这样的 

    matlab实现代码,其中sort_nat文件字符串排序的函数可以参考: Matlab对文件名进行自然排序_猪猪侠-CSDN博客_matlab文件名排序

    tic
    clc,clear;
    warning off
    filelist=dir([pwd,'\波形输出\','*.csv']);%总文件名
    n=length(filelist);%文件个数
    namelist=cell(1,n);
    %排序
    for j=1:n
        namelist{j}=filelist(j).name; %排序
    end 
    sortname=sort_nat(namelist);
    Data=zeros(1024,n)*NaN;
    h=waitbar(0,'计算中,请稍候!');
    n=100;
    for i=1:n
        [Num,TxT,Raw]=xlsread([pwd,'\波形输出\',char(sortname(i))]);%读入数据
        Data(:,i)=Num;
        str=['计算中',num2str(i/n*100),'%'];
        waitbar(i/n,h,str)
    end
    close(h)
    save Data Data
    toc

    matlab运行处理时间要1个小时左右, 小编觉得无聊尝试用python代码实现此功能,哇,太香了,python只要几分钟,python真香,等小编有空写另一个博客:python怎么批量处理csv、Excel、txt文件敬请期待,需要此次案例matlab代码和数据的请联系小编VX: idmatlab,matlab环境已经搭建好了,之间运行就行了(Mac系统或者linux系统除外,这个可以参考实战案例5的第二个代码和开始介绍的Mac相关事项进行适当修改code

    详细的文件数据和代码已经上传群里 

    实战案例7

     源码:

    clc
    clear
    [file,path]=uigetfile('*.csv');
    if file == 0
        msgbox('You have not selected any files','Error','error');
        return
    end
    if ~exist([pwd,'\result'],'file')
        mkdir([pwd,'\result\']);
    end
    
    [Num,TxT,Raw]=xlsread([path,file]);
    len=size(Raw,1);
    n=0;
    
    for i=1:len
        if  contains(char(Raw{i,2}),'type=')
            idx_start1=strfind(char(Raw{i,3}),'=');
            idx_start2=strfind(char(Raw{i,4}),'=');
            idx_end2=strfind(char(Raw{i,4}),' ');
            n=n+1;
            % data(n,1)=str2double(Raw{i,3}(idx_start1+1:end));
            % data(n,2)=str2double(Raw{i,4}(idx_start2+1:idx_end2));
            data{n,1}=Raw{i,2};
            data{n,2}=Raw{i,3}(idx_start1+1:end);
            data{n,3}=Raw{i,4}(idx_start2+1:idx_end2);
        end
    end
    
    for j=1:n
        time(j)=str2double(cell2mat(data(j,2)));
        hight(j)=str2double(cell2mat(data(j,3)));
    end
    plot(time,hight,'r-o')
    ylabel('Hight')
    xlabel('time')
    grid minor
    
    title={'type','time','hight'};
    Data=[title;data];
    xlswrite([path,'result\',strtok(file,'.'),'.xlsx'],Data)
    
    

    源码数据上传到:好玩的matlab/数据批量处理 - Gitee.com 

    实战案例8

     

    源码:

    clc;clear;close all;
    selpath=uigetdir(pwd,'选择文件夹');%选择文件夹
    if selpath == 0
        msgbox('You have not selected any files','Error'); %如果路径没有选择返回,终止运行
        return
    end
    
    str_file=strfind(selpath,'\');% 查找选择的文件夹名称索引
    file_name=selpath(str_file(end)+1:end);%提取选择的文件夹名称
    
    if ~exist('result','file')%创建文件
        mkdir('result')
    end
    
    % selpath='.\20um\';
    file=dir([selpath,'\*.txt']);%获取当前选择路径下面的所有txt
    outData=cell(length(file),2);%声明空间
    for j=1:length(file) %循环变量文件名称
        data_str=importdata([selpath,'\',file(j).name],'%f'); %读取txt
        str1=strsplit(data_str,'RX:AA');%对读取的txt文件进行分割
        for i=2:length(str1)
            str2=strsplit(str1{i}); %str1再一次分割
            %数据解析协议:
            data=hex2dec(str2{2})*2^16+hex2dec(str2{3})*2^8+hex2dec(str2{4})*2^0;
            if data>2^15
                data=data-65536;
            end
            
            Data(i-1)=data;
        end
        outData(j,1)={strtok(file(j).name,'.')};
        outData(j,2)=num2cell(mean(Data(2:end-2)));%??????
    end
    xlswrite([selpath,'\..\result\',file_name,'.xlsx'], outData)%输出
    

    最终效果 

     

     获取数据文件可以关注:好玩的Matlab  输入关键字:20211109  就可以领取数据+code

    实战案例9

    源码

    clc;clear;close all;
    Time=datestr(now,'yyyy-mm-dd-HH-MM-SS');
    folder=dir([pwd,'\data\*.xlsx']);
    
    if ~exist('result','file')
        mkdir('result');
    end
    
    n=length(folder);
    for j=1:n
        namelist{j}=folder(j).name;
        name_idx_start=strfind(namelist{j},'(');
        name_idx_end=strfind(namelist{j},')');
        name_num(j)=str2num(namelist{j}(name_idx_start+1:name_idx_end-1));
    end
    
    [~,name_idx] = sort(name_num);%名称排序
    disp('-------------开始处理-----------------')
    for i=1:n
        %     disp(folder(name_idx(i)).name);
        %     [Num{i},TxT{i},Raw{i}]=xlsread([pwd,'\data\',folder(name_idx(i)).name]);
        [Num,TxT,Raw]=xlsread([pwd,'\data\',folder(name_idx(i)).name]);
        for j=1:size(Raw,1)
            if   strfind(Raw{j,1},'DataValue')
                disp(['文件(',num2str(i),')的位置为:',num2str(j)])
                loc_idx(i)=j;
                Data{i}=Raw(j:end,2:4);
                break;
            end
        end
    end
    % DataNan=cell(size(Data{1},1),1);
    for i=1:size(Data,2)
        if i==1
            NewData=Data{1};
        else
            NewData=[NewData,Data{i}] ;
        end
    end
    Title_name=cell(1,size(NewData,2));
    for i=1:n
        Title_name(1,3*i-1)={strtok(folder(name_idx(i)).name,'.')};
    end
    Data_all=[Title_name;NewData];
    xlswrite([pwd,'\result\',Time,'.xlsx'],Data_all);
    disp(['-------------输出成功:【',Time,'.xlsx】-----------------'])
    
    

    运行结果: 

     

    QQ群

    微信

    抖音

    群资料 

    展开全文
  • matlab批量处理excel数据,绘图并保存

    千次阅读 2019-10-02 08:58:18
    2. 循环读取文件名,放入元胞数组 3. 按文件名循环处理数据,每个文件处理流程如下 3.1 根据数据标识去除无效数据 3.2 读取待处理数据,存入二维数组 3.3 数据运算,绘图 3.4 新建文件夹dat_image,以文...
  • 有时候我们需要对某个文件夹或者多个文件夹中的Excel...对文件地址下的excel进行批量读取方法为: excel_path= 'E:\Study of Lab\Coding\Experience DatePhoto\Excel\'; %文件夹路径 img_path_list = dir(strcat(ex
  • 批量读取同一文件夹下所有excel指定单元格内容并写入新单元格
  • for i = 1:255 if i<100 filename = strcat('0',num2str(i),'.xls'); else filename = strcat(num2str(i),'.xls'); end a1(:,1)=xlsread(filename,'sheet1','D22:D30');... a1(:,2)=xlsread(filename,'sheet2'...
  • matlab读取一个目录下的所有.wav文件
  • matlab读取excel文件

    万次阅读 2018-08-19 15:38:11
    这些表格数量较多,所以通过matlab进行批量读取和处理。 在读取过程最重要的函数是xlsread函数,使用该函数可以方便的读取excel文件的数值、文本等, num = xlsread(filename,sheet,xlRange) 通过这条函数可以...
  • matlab 批量读取execl(csv)文件

    万次阅读 2017-02-26 18:58:21
    一直没时间整理自己写的垃圾代码,如今代码乱的一团糟,今天把matlab读取excel文件拿出来;需要根据数据格式稍作修改就可以用; 读取核心的语句莫过这两句:dir(); csvread(); 文件下载: %read csvdata %author:...
  • 目前很多科学数据、气象数据都是NC格式,一般的软件无法打开NC文件,很难对其进行进一步处理。而我们直观且习惯的处理是图形化的tif,如利用ENVI,ARCGIS,ERDAS等,因此,ncToTif就很有必要
  • MATLAB怎么批量读取文件夹中的文件

    万次阅读 2019-05-24 19:56:02
    今天给大家介绍一下MATLAB中如何批量读取文件夹中的文件,实现很简单,程序如下(比如我批量读取文件中的xlsx文件): str = 'G:\MATLAB Program\Project Program\数据\'; files = dir(strcat(str,...
  • 利用常用软件批量完成科研数据处理tags: - MATLAB - 科研软件相信平时大家都有这种时候,测了一大堆数据,也知道该怎么去处理,但是样品很多,数据量很大,然后对于每个样品去处理的时候都得用软件进行重复的处理,...
  • Matlab读取Excel各个子表的数据进行拟合 前言 现有一个Excel文件,里面存有很多个子表,每个子表格式一样,但是数据不一样,现要对每个子表中的好多行数据进行多项式拟合,并将拟合好的结果保存回Excel中各个子...
  • 需求:循环读取Excel文件,并将其赋值给一个三维数组 2. 具体操作 2.1 获取Excel的信息 filefolder='G:\2_Dataprocessing\4_PPT\DataProcessingCode\Methods4PPT\VPMGPP2001TO2016Excel\'; files=dir(strcat(file...
  • 涉及命令:dir, ls; GUI中借助getfile 待总结……
  • matlab将多个excel读取并存到一个excel的不同sheet中
  • MATLAB怎样有效读取excel文件中的数据?

    万次阅读 多人点赞 2019-04-10 18:07:42
    1.使用函数xlsread读取单个文件 (1)num=xlsread(filename) filename是单引号括起来的带路径的文件名,函数直接读取filename所指文件的sheet1中的数据区域存储到双精度矩阵num中;其中,数据区域的选取规则是:对表格...
  • matlabExcel读取数据

    万次阅读 多人点赞 2019-07-09 23:16:25
    1.用xlsread函数读取一个Excel文件 2.读取指定sheet中的数据 2.读取指定sheet中的数据 1.用xlsread函数读取一个Excel文件 (1)num=xlsread(filename) filename是单引号括起来的带路径的文件名,函数直接读取...
  • MATLAB如何读取excel文件中的数据?

    万次阅读 多人点赞 2016-11-19 15:26:25
    MATLAB如何导入excel数据。 读取sheet1中的所有数据 以03版excel为例,假设excel中数据为 默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤),然后再MATLAB主窗口中输入下面命令...
  • 1.打开名为data的文件夹,读取所有txt文件 2.计算txt文件个数(len) 3.循环读取,load用于打开txt,处理数据得到b,c,d 4.读取test.xlsx的行数,列数,判断其是否为空 5.逐行写入,其中tmpRaw为当前行数 6....
  • matlab批量修改文件名

    2016-02-04 05:12:32
    matlab代码,可以打开任意文件夹,批量修改文件名
  • 这是我写的一个Fortran+C语言小程序,可以批量地把GrADS的数据文件(.dat)转换为MatlabExcel等别的软件方便读取的CSV文件。支持在Windows、macOS、Linux系统上运行。 这个小程序的名字叫做GrADSDataToCSV。名字...
  • MATLAB批量读取处理数据文件

    万次阅读 2016-10-13 14:47:47
    MATLAB批量读取处理数据文件(没有命名规律的数据文件)问题描述:批量处理数据是科研,工作过程中经常遇到的问题。对于很多新手来说,怎么读取数据就是一个比较棘手的问题,尤其是那些完全没有命名规律的文件,...
  • matlab读取多个excel某列数据

    万次阅读 2017-10-18 10:35:00
    1.读取所有excel表名 2.逐个读取文件名 3.读取其中某几列 files = dir('*.xlsx');% 读取所有excel文件名 filename = files(i).name; %逐个读取文件名 [A,B] = xlsread(filename); C=B(:,[1,2,4])% 读取1,2...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 552
精华内容 220
关键字:

matlab批量读取excel

matlab 订阅