MATLAB批量读取.txt文件

该程序用于批量读取指定文件夹中的.txt文件,将反序的16进制数据转换为原始格式,再转换为十进制并绘图。它可以统一添加图例,将结果存储为.mat文件,但仅支持相同长度的文件。用户需注意修改文件夹路径和处理图例警告,以及处理.mat文件重名问题。
摘要由CSDN通过智能技术生成

一、功能概述

本文叙述的程序功能是批量读取某个文件夹中以空格为间隔符的数据,数据为16进制,但是有些特殊,比如原数据是0x12345678,但是.txt文件中为0x78563412,本程序可将.txt文件中的数据转换成原数据然后转换成十进制并绘图,当然如果有其他需要,可以自行修改。

在开发过程中有时需要利用MATLAB将导出的数据绘制成图形,为了使绘图更加高效方便,编写了一个MATLAB程序,主要有以下功能:
1) 能够将文件夹路径下所有.txt文件的图形绘制在一起;
2) 能够统一给每一条波形添加图例;
3) 能够控制是否需要生成.mat文件;
除了上述的功能外,该绘图程序也有限制,在绘制图形时只能绘制相同长度的.txt文件,对于不同长度的.txt文件,该程序只能正常绘制第一个.txt文件。后续如果有需要同时绘制不同长度的.txt文件的需求会对程序进行修改。

二、使用说明

1、修改文件夹路径

在使用时首先要确定需要绘制的.txt文件所在文件夹路径,然后写入到程序中,具体位置如图所示。
修改文件路径

2、添加图例

在使用时首先要确定需要绘制的.txt文件所在文件夹路径,然后写入到程序中,具体位置如图所示。
添加图例
如果不需要添加图例,可以直接将该行注释掉,如果需要添加图例还需要注意的是在运行时会出现警告,如图所示,但是不会影响正常使用。
警告

3、将转化结果存储成.mat文件

使用时需要填入文件存储路径,当同一路径下已经存在一个同名的.mat文件时程序会报错,需要将之前存储的同名文件重命名或者删除,或者更换一个新的存储路径,填写存储路径的位置如图所示。
将转化结果存储为.mat

4、其他注意事项

该程序的第一行为clear all,会清除当前工作区的所有变量内容,如果当前工作区存在比较重要的内容而且未保存,要注意运行时将第一行的clear all注释掉。

三、程序源码

clear all;   % 该行会清除工作区变量,如果不需要清除请将该行注释

file = dir("D:\培训相关\培训作业\meter");   % 扫描该文件夹中的所有子文件
% 注意:前两个是无意义的
subfile_Num=length(file);   % 获取子文件总数(前两个无效)

for i = 3 : subfile_Num
%*******************************数据读取**********************************%
    subfile = fullfile(file(i).folder,file(i).name);   % 拼出第一个子文件路径
    subfileID = fopen(subfile);   % 打开一个子文件
    dataraw_cell(i-2) = textscan(subfileID,'%s');   % 以空格为标识提取数据
    data_raw = dataraw_cell{1,i-2}';   % 取cell中第1行第i-2列矩阵并转置
    fclose(subfileID);   % 关闭文件
%*******************************数据处理*******************************
    dataraw_Num = length(data_raw);
    cell_tmp = cell(1,dataraw_Num);
    for j = 1 : floor(length(data_raw))
        cell_tmp{j} = [data_raw{j}(7:8),data_raw{j}(5:6),data_raw{j}(3:4),data_raw{j}(1:2)];
    end
    data_dec=hex2dec(cell_tmp);
    data_dec(data_dec>2^31)= mod(data_dec(data_dec>2^31),2^31) - 2^31;
%*******************************数据存储**********************************%
    data_out(:,i-2) = data_dec;
%*******************************绘制波形********
    N = 1 : dataraw_Num;
    figure(1);
    plot(N,data_out(:,i-2),LineWidth=1);
%*******************************添加图例**********************************%
    legend('DECI_SEL=0','DECI_SEL=1','CIC采样率200KHz','CIC采样率100KHz');   % 添加图例
%******************%*********存储为.mat文件**************%%%**************%
    save('D:\培训相关\培训作业\meter\output_data.mat','data_out');
    save('D:\培训相关\培训作业\meter\file_name.mat','file');
  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二土电子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值