资源简介
使用Matlab解析HEX386格式数据.zip
代码片段和文件信息
%function d=HEX386_TO_DEC()
%使用MDK输出内存数据后,通过本脚本读入并绘图
%假设内存中有数组 short Data[2500]可以通过以下命令导出HEX文件
%输出命令 save e:\d2500.hex Data&Data[2499]
%应用时需要修改导出的数据宽度和文件路径
clear;
file_path=[];
hex_file_name=[];
pow_2_8=2^8;
pow_2_16=2^16;
pow_2_32=2^32;
% 定义读取文件的数据宽度
% 1:BYTE 8bit
% 2:short 16bit
% 4:long 32bit
% Float_Type_Flag=1 表示读取的是浮点数据(只能为单精度)
% 若读取浮点数标志有效,则数据位宽度强制为4,下方的配置无效
% Sign_Flag=1 表示导入的数据为有符号数
% Float_Type_Flag有效时 Data_Width无作用,Sign_Flag无作用
%%%%%%%%%%%%%% 需要改动的地方 %%%%%%%%%%%%%%
Data_Width=4;
Float_Type_Flag=1;
Sign_Flag =1;
%file_path=‘e:\d2500.hex‘;
[hex_file_name hex_path_name]=uigetfile({‘*.hex;*.bin;*.txt‘}‘选择HEX文件‘);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 如果选择了文件则合成完整路径
if hex_file_name
file_path=[hex_path_name hex_file_name];
end
%配置浮点数数据宽度强制为4(单精度)
if Float_Type_Flag
Data_Width=4;
end
Read_Data=importdata(file_path‘ ‘);
char_data=char(Read_Data);
[rowcolumn]=size(char_data);
d=zeros(1(column-11)/(Data_Width*2)*(row-4));
counter=0;
error_flag=0;
for i=2:row
if strcmp(char_data(i8:9) ‘01‘)
break;
end
len = hex2dec(char_data(i2:3));
switch Data_Width
case 1
for i2=1:len
val=(hex2dec(char_data(i(9+(i2-1)*2):(9+i2*2))));
if and(Sign_Flagbitshift(val-7))
val =val-pow_2_8;
end
counter=counter+1;
d(1counter)=val;
end
case 2
len=len/2;
for i2=1:len
val=(hex2dec(char_data(i[(12+(i2-1)*4):(9+i2*4) ...
(10+(i2-1)*4):(7+i2*4)])));
if and(Sign_Flagbitshift(val-15))
val =val-pow_2_16;
end
counter=counter+1;
d(1counter)=val;
end
case 4
len=len/4;
for i2=1:len
Long_Data_str=char_data(i[(10+i2*8-2):(10+i2*8-1) (10+i2*8-4)...
:(10+i2*8-3) (10+i2*8-6):(10+i2*8-5) (10+i2*8-8):(10+i2*8-7)] );
val=(hex2dec(Long_Data_str));
if Float_Type_Flag
sign= bitshift(val-31);
m = bitshift(val-23)-127-bitshift(sign8);
last= (bitand(val2^23-1)+2^23);
val =(2^m)*((-1)^sign)*last/(2^23);
elseif and(Sign_Flagbitshift(val-31))
val =val-pow_2_32;
end
counter=counter+1;
d(1counter)=val;
end
otherwise
error_flag=1;
end
end
if error_flag
disp(‘数据位宽错误!‘);
else
save(‘d.mat‘‘d‘);
plot(d‘b.‘)grid on
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 28149 2019-07-10 22:29 sign_f2500.hex
文件 28149 2019-07-10 22:29 sign_l2500.hex
文件 28170 2019-07-10 22:29 sign_l2500000.hex
文件 14097 2019-07-10 22:28 sign_s2500.hex
文件 606 2019-07-29 21:52 使用说明.txt
文件 2984 2019-07-10 23:20 Float_figure.m
- 上一篇:MATLAB环境下用BP神经网络进行数据分类
- 下一篇:模拟退火算法计算费马点
相关资源
- 交通灯信号控制系统02.ms10
- OFDM图.m
- FxNewton.m
- yalmipmatlab解决UC问题范例1补充.rar
- SAM_SSD.m
- 三个参与主体演化博弈matlab.docx
- LM.m
- 二维粒子群算法的matlab源程序.docx.z
- open_file.m
- ofdm1.m
- pure_pursuit_sim.m
- yucekongzhi.m
- Chineseflag.m
- MATLABR2016bMac破解版.txt
- aloha.m
- 基于NSGAII多目标优化Matlab代码.zip
- matlab仿真.rar
- matlabR2016b.zip
- TDOA算法matlab仿真代码.rar
- MATLABR2008控制系统动态仿真教程_例题
-
燃料电池汽车仿真电路设计SIMUli
n - 倒计时电路.ms14
- MatlabR2019a安装破解教程.zip
- maxfter.m
- case30.m
- MatlabR2019A.7z
- SVPWMconverter.mdl
- zw_MATLAB程序.zip
- Matlab调制库函数fskmod参数及源代码详
- MATLABR2018bWin64Crack.zip
评论
共有 条评论