MATLAB批量读取txt文件(含有字符串)中的数值,并存在同一个excel表的多个sheet表中

捣鼓了许久,终于达到了自己想要的效果,现记录一下!

一、背景:

使用单片机的串口调试助手导出的txt文件,里面含有字符串,并且测试了很多组,一个个处理起来很麻烦,写一个matlab程序可以一次性将多个txt里面的数据提出来,就很nice!

下面是txt文档里面的数据,我们只想要里面的数字!

R=328 G=1902 B=6406 C=8762
R=328 G=1902 B=6406 C=8762
R=329 G=1902 B=6407 C=8764
R=329 G=1902 B=6407 C=8764
R=329 G=1902 B=6407 C=8764
R=329 G=1902 B=6408 C=8765
R=329 G=1902 B=6408 C=8765
R=329 G=1902 B=6408 C=8765

R=329 G=1902 B=6408 C=8765
R=329 G=1902 B=6408 C=8765
R=329 G=1902 B=6407 C=8764
R=329 G=1902 B=6407 C=8764
R=329 G=1902 B=6407 C=8764

我们还有这么多的txt文档!

 二、代码

废话不多说,直接上代码吧!会用上函数的调用

clear 
close all

Path = 'D:\03_Min_issues\G1\';  % 设置数据存放的文件夹路径
File = dir(fullfile(Path,'*.txt'));  % 显示文件夹下所有符合后缀名为.txt文件的完整信息
Excel_name = 'G.xlsx'; %保存到excel文件名
Length_Names = size(File,1);    % 获取所提取数据文件的个数

for k = 1 : Length_Names
    Lum_FileName=File(k).name; %获取文件名
    c = read_txt(Lum_FileName); % 跳转函数read_txt,读取txt文件中的数据
    Sheet_page = k; 
    writematrix(c,Sheet_name,'Sheet',Sheet_page); %分别保存到多个sheet表中
end

被调用的函数:read_txt.m

function c = read_txt(FileLoc)
%UNTITLED2 read the 'txt':The number inside the string
%   enter a value:' FileLoc' is filename;
%   Return value: 'c' ,the data type is double;
%   

datafid=fopen(FileLoc,'r');  %open FileLoc
Freq=[];   % Create an empty array
while ~feof(datafid)     %Read to the end of the file
    tline=fgetl(datafid);         
    if strncmp(tline,'R',1)   %如果这一行开头的第一个字符和'R'匹配则                   
        freq=regexp(tline,'\d*\.?\d*','match');  %提取这一行的浮点数
        Freq=[Freq freq];
    end
end
 
Freq=cellfun(@str2num,Freq);      %元胞中的字符串转数字
b=reshape(Freq,4,[]);     %一行数据转为二维矩阵
c=b';   %转置成n行4列的矩阵,这个才是我们需要的数据
end

三、结果

得到的结果如下:

ABCD列的数据分别为RGBC的数据,一共有17个sheet表,按照顺序依次排开,注意:文档的命名规则尽量按照matalb的读取规则来,这样你的sheet也会跟着顺序来

 

 

 

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值