MATLAB批量读取.txt文件

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


🎀 文章作者:二土电子
🐸 期待大家一起学习交流!


一、功能概述

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

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

二、使用说明

1、修改文件夹路径

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

bacfdcf2b9a6edbe4ef9cd2b8cf0f770_fd89ede96f704130b23471c803e2772f.png

2、添加图例

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

40d2ec2bfca29d1e54b0f02ad1c10f78_4e67664339cf42a9854eeaf37fb86a84.png

如果不需要添加图例,可以直接将该行注释掉,如果需要添加图例还需要注意的是在运行时会出现警告,如图所示,但是不会影响正常使用。

4b91fb615eeabf9ac99622e1cf53ffa4_c140e441320c4d80b7ffe76602ad6f82.png

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

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

c14bccd766144bc86cb1abc3580711d4_262e0f298151436aa46b329987c9cc92.png

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');
相关文章
|
3月前
|
JSON 数据格式 Python
【2023最新】Matlab 保存JSON数据集文件,并用Python读取
本文介绍了如何使用MATLAB生成包含数据和标签的JSON格式数据集文件,并展示了用Python读取该JSON文件作为训练集的方法。
123 1
|
3月前
Matlab批量修改指定文件下文件名
Matlab批量修改指定文件下文件名
174 1
|
3月前
|
存储 算法 Serverless
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
|
3月前
|
存储 Serverless
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
6月前
|
算法 计算机视觉 异构计算
基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于肤色检测算法的摘要:使用MATLAB 2022a和Vivado 2019.2进行测试和仿真,涉及图像预处理、RGB到YCbCr转换、肤色模型(基于阈值或概率)以及人脸检测。核心程序展示了如何读取图像数据并输入到FPGA处理,通过`tops`模块进行中值滤波、颜色空间转换及人脸检测,最终结果输出到"face.txt"。
|
6月前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。
|
6月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。
|
6月前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。