MATLAB .dat读、存及简单处理


0 前言

近期接触到二进制文件.dat,写一个简单的教程。
假设文件内容为连续的通信数据,含有不符合的数据,对其进行简单剔除。


1 思路

假设输入.dat文件共有3个整帧数据,每帧长度5,共15个数据
数据为:

129 130 131 132 133 0 0 0 0 0 5 4 3 2 1

要求剔除某帧和为0的数据,输出.dat文件包含符合要求的数据

2 MATLAB

clear

% 新建.dat用于测试
fidIn = fopen('in.dat','w');
dataRows = 3;
dataLength = 5;
for i=1:dataLength
    fwrite(fidIn,i+128)
end
for i=1:dataLength
    fwrite(fidIn,0)
end
for i=1:dataLength
    fwrite(fidIn,dataLength + 1 - i)
end
fclose(fidIn)

% 读取.dat文件
count = 0;
fidIn = fopen('in.dat','r');
fidOut = fopen('out.dat','w');
for i=1:dataRows
	% 读取一帧数据
    data(i, :) = fread(fidIn,dataLength);
	
	% 判断
    if sum(data(i, :)) ~= 0
        fwrite(fidOut, data(i, :))
    else
    	% 记录不合格数据个数
        count = count + 1;
    end
end

% 读取.dat文件
fidOut = fopen('out.dat','r');
for i=1:dataRows-count
    dataOut(i, :) = fread(fidOut,dataLength);
end
fclose(fidIn)
fclose(fidOut)

输入文件16进制显示为
在这里插入图片描述

输出文件16进制显示为
在这里插入图片描述

3 结语

第45篇

半年没更了,也不知道自己在忙啥
DSP暂时也用不到,FPGA也没学
工作也不对口,每天都想离职

个人水平有限,有问题欢迎各位大神批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值