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也没学
工作也不对口,每天都想离职
个人水平有限,有问题欢迎各位大神批评指正!