批量读取文件夹中txt文档,扫描并统计数据

问题描述

存在这样的数据项目
1 代号 :0000 V 1 0/01:08:09 - 0/01:09:10 1 1 789
2 代号 :0000 V 1 0/01:09:09 - 0/01:09:19 1 354 73459
3 代号 :0000 V 1 0/01:08:09 - 0/01:10:10 1 453 789
4 代号 :0000 V 1 0/01:08:09 - 0/01:19:10 1 234 74353

需要针对某个特定的代号,筛选数据,要求:
(1)统计代号出现的次数
(2)计算代号所在数据组的时间差,以0/01:08:09 - 0/01:10:10 为准,格式按照dd/HH:MM:SS标注
(3)统计出现该代号的平均时间差和总时间差
(4)文档中可能存在乱码数据,能够甄别处理

解决方案代码

close all
clear all
clc
%% 循环读取文件夹中的txt文件
temp = dir(['*.txt']);
% temp = dir(['D:\文件夹\','*.txt']);  输入文件夹地址,然后逗号之后拼接上文件名称(注意文件最后要有一个"\”)
N = length(temp);   %文件夹内文件的个数
result = zeros(N,3);
for i = 1:N
    filename = temp(i).name;
    fid = fopen(filename);     % 首先打开文本文件
    n = 0; % 计算出现的次数
    T= []; % 计算的时间
    while ~feof(fid)    % while循环表示文件指针没到达末尾,则继续
        % 每次读取一行, str是字符串格式
        str = fgetl(fid);
        %' ' 作为分割数据的字符,结果为cell数组
        s = regexp(str, ' ', 'split');
        if length(s)>5
            if strcmp(s{2},'3C274')
                n = n+1;
                s(cellfun(@isempty,s))=[]; % 删除cell中的空白格
                for k = 2:length(s)
                    if strcmp(s{k},'1')
                        t1 = s{k+1};
                        t2 = s{k+3};
                        break
                    end
                end
                if t1(1)=='0' && t2(1)=='0'
                    t1(1)=='2';
                    t2(1)=='2';
                end

                T1 = datevec(strcat('2022/11/',t1),'yyyy/mm/dd/HH:MM:SS');
                T2 = datevec(strcat('2022/11/',t2),'yyyy/mm/dd/HH:MM:SS');
                dT = etime(T2,T1);
                T = [T dT];
            end
        end
    end
    result(i,:)= [n mean(T)/60 sum(T)/60];
    fclose(fid);
end
temp.name
result

分别按照顺序输出了读取的txt文件名字,统计数据用result保存,每行分别表示特定代号出现的次数、平均时间差和总时间差,temp.name表示文件名

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Haleine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值