HEX文件格式不赘述,写里直接放上代码。请批评改正。

 %%convert a signal data into hex file format
% data format:16bit
% signal length: less than ^-
% author: Yang Li yangli0534@gmail.com
% data:2015.01. clear all;
close all;
clc; %% fixed point or binary16 float point
fixed=;
%% generate a signal waveform
%
T=;%time length
fs=1e3;%sample rate
N=;
Period=N/fs/;
f=/Period;
t=linspace(,(N-)/fs,N); %data=:^-;
data= sin(*pi*f*t) +(rand(,N)-0.5)/;
% data=mod(*t,);
% plot(t,data)
dataBits=;
byteBits=; %% convert into bits fixed point number
if fixed ==
maximum=max(abs(data));%maximum of absolute signal
scale=(^-)/maximum;%scale
data=round(data*scale);
for i=::length(data)
if data(i) <
data(i) =^-abs(data(i)) ;
end
end
end
%% write
fh=fopen('data.hex','w');%open a new file (file path, file name)
bytesEveryRow=;%write bytes every row
dataEveryRow=bytesEveryRow/(dataBits/byteBits);%number of data every row
lengthData=length(data);%length of signal data
rowLengths=ceil(lengthData/dataEveryRow);%number of rows of the file to be written for i=:rowLengths % write a row each time
if(mod(i,hex2dec(''))==)
baseaddr=dec2hex(floor(i/hex2dec('')),);
checkSum=+hex2dec(baseaddr(:))+hex2dec(baseaddr(:));
checkSum=(dec2hex(bitand(-mod(checkSum,),),));
fprintf(fh,[':02000004',baseaddr,checkSum,,]);%产生HEX码(end-:end) end
checkSum=;
addr=dec2hex(mod((i-)*,hex2dec('')),);%the start address of this row
checkSum=hex2dec(addr(:))+hex2dec(addr(:));
if i*dataEveryRow <lengthData % numbers of data to be written greater than dataEveryRow
dataRow=dataEveryRow;
dataHex='';
for j=*(i-)+::*(i)
if fixed == %
dataHexCurr=dec2hex(data(j),);% bits fixed point
else
dataHexCurr=num2binary16hex(data(j));%number format: 16bits floatIEEE half precison float point standard,result is a hex format
end
checkSum=checkSum+hex2dec(dataHexCurr(:))+hex2dec(dataHexCurr(:));
dataHex=strcat(dataHex,dataHexCurr);
end else
dataHex='';
dataRow =lengthData-(rowLengths-)*dataEveryRow;
for j=(rowLengths-)*dataEveryRow+::lengthData
if fixed == %
dataHexCurr=dec2hex(data(j),);% bits fixed point
else
dataHexCurr=num2binary16hex(data(j));%number format: 16bits floatIEEE half precison float point standard,result is a hex format
end
checkSum=checkSum+hex2dec(dataHexCurr(:))+hex2dec(dataHexCurr(:));
dataHex=strcat(dataHex,dataHexCurr);
end
end
checkSum=checkSum+dataRow*dataBits/byteBits;
checkSum=(dec2hex(bitand(-mod(checkSum,),),));
% disp([num2str(i),'--',dataHex,'--',checkSum])
fprintf(fh,[':',dec2hex(dataRow*dataBits/byteBits,),addr,'',dataHex,checkSum,,]);%产生HEX码(end-:end)
end fprintf(fh,':00000001FF');
fclose(fh);

代码中有定点浮点两种,其中浮点格式为IEEE754标准中的half-precision-floating point, 16bit, 1bit 浮号位,5bit指数位,10小数位,代码如下:

 function [ hex ] = num2binary16he( number )
%The IEEE standard specifies a binary16 as having the following format: %Sign bit: bit
%Exponent width: bits
%Significand precision: bits ( explicitly stored)
%S EEEEE MMMMMMMMMM
%INPUT: number is a random precision number %OUTPUT : var binary is a 's string of the binary16
% var decimail is the value of the number in decimal %Author :Yang Li .
%Email: yangli0534@gmail.com
if real(number) >= ^
error('beyond the maximum :-2^14--+2^24');
end S=number< ;
E=;
M=abs(number);
while((E>- && E<)&&( M>= || M< ))
if(M>=)
E=E+;
M=M/;
else
E=E-;
M=M*;
end
end
if ((E==- || E==)&& M>= || M<)
M=;
else
M=round((M-)*^) ;
end number1=(-)^S*(^ E )*(+M/^);
% binary=strcat(num2str(S),num2str(E),num2str(M))
E =E+;
binary=strcat(num2str(S),dec2bin(E,), dec2bin(M,)) ; sReal=(str2double(binary()));
eReal =-;
for i=:
eReal=eReal+str2double(binary(i))*^(-i);
end
% eReal=eReal*(-)^str2double(binary());
mReal = ;
for i=:
mReal=mReal+str2double(binary(i))*^(-i);
end numberReal=(-)^sReal*^eReal*(+mReal/^);
err=num2str(abs(number-numberReal));
decimal=numberReal;
% disp(['the origin data is : ',num2str(number)]);
% disp(['the float format is : ',binary]);
% disp(['so ,there is a error :',num2str(abs(number-numberReal))]); num=;
for i=:
num=num+str2double(binary(i))*^(-i);
end
hex=dec2hex(num,);
end

matlab生成HEX文件-任意信号 大于64K长度的更多相关文章

  1. 用matlab生成mif文件

    在FPGA中,rom模块的初始化文件分为两种,一种是hex文件,另外一种是mif文件,这两种文件都可以通过Quartus进行手工创建,进行手工输入数据,也可以借助于专用的文件编辑器完成编辑. 在此介绍 ...

  2. Keil提示premature end of file错误 无法生成HEX文件

    今天舍友在使用Keil UV4的时候遇到一个问题:Keil提示premature end of file,无法生成hex文件. 代码是没有错误的.那么问题就出在设置上面了. 百度了一圈,发现很少人解答 ...

  3. 【SW4STM32生成 hex文件的设置方法】

    SW4STM32生成 hex文件的设置方法 开发环境:WIN7_64 + SW4STM32  联系方式:yexiaopeng1992@126.com 修改: 2018年1月21日 在这周,有一个热心的 ...

  4. matlab 生成.exe文件 转

    本文链接:https://blog.csdn.net/qq_20823641/article/details/51863737 如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程 ...

  5. Keil4 uVision软件生成hex文件

    keil4下载地址:http://www.pc6.com/softview/SoftView_236836.html 按图操作即可,注意文件夹选择. 1.选择工程,选择第一个new uvision p ...

  6. java调用matlab生成exe文件

    一.Matlab生成Java Package 1.在MATLAB的Command Window输入deploytool命令,选择Library Compiler. 2.在弹出的窗口选择Java Pac ...

  7. matlab 生成mat文件

    生成MAT文件 假如你的矩阵A.B都已赋值,现在需要将A,B矩阵保存成mat格式文件,执行如下命令:save mydata A B 就会把A B矩阵数据保存在yourdata.dat文件中了 保存指定 ...

  8. ABAQUS粘弹性边界及地震荷载施加的简单实现(Matlab生成input文件)

    思路 粘弹性边界因为能够考虑地基辐射阻尼而使得结构抗震的计算结果更趋于合理,所以在需要考虑结构地基相互作用的结构抗震计算时,是较为常用的地基边界处理和地震荷载施加方法.而ABAQUS软件是经常用来进行 ...

  9. Matlab生成.dll文件在.NET中加载失败与平台的关系及解决方案

    问题链接地址:http://bbs.elecfans.com/forum.php?mod=viewthread&tid=207995

随机推荐

  1. Protocol Buffers动态消息解析

    http://www.searchtb.com/2012/09/protocol-buffers.html http://www.cnblogs.com/jacksu-tencent/p/344731 ...

  2. Windows程序控件升级==>>构建布局良好的Windows程序

    01.菜单栏(MenuStrip) 01.看看这就是menuStrip的魅力: 02.除了一些常用的属性(name.text..)外还有: 03.有人会问:上图的快捷键: 方法: 方式一:1.设置菜单 ...

  3. ahjesus SSHkey登陆linux服务器,无需密码,ubuntu

    cd ~/.ssh/如果目录不存在就新建一个 mkdir ~/.ssh 制作公匙 ssh-keygen -t rsa默认会生成id_rsa.pub的公匙 将公匙推送到指定的服务器 scp id_rsa ...

  4. 【iOS】Quartz2D练习-动态改变属性值

    一.通过slider控制圆的缩放 1.实现过程 新建一个项目,新建一个继承自UIview的类,并和storyboard中自定义的view进行关联.代码示例:SLViewController.m文件 # ...

  5. 【背景建模】PBAS

    Pixel-Based Adaptive Segmenter(PBAS)检测算法,是基于像素的无参数模型,该算法结合了SACON和VIBE两个算法的优势,并在这两个算法的基础上改进而来,SACON和V ...

  6. percona 5.6升级到5.7相关error及解决方法

    今早,把开发环境的mysql升级到了5.7.15,5.6数据导入后,启动一切正常,检查.err日志,发现有如下异常: 2016-10-31T00:29:33.187073Z 0 [Warning] S ...

  7. SharpGL学习笔记(十八) 解析3ds模型并显示

    笔者设想的3D仿真中的元件,是不可能都是“画”出来的.这样就玩复杂了,应该把任务分包出去,让善于制作模型的软件来制作三维模型,我们只需要解析并且显示它即可. 3dsmax制作三维模型的方便,快捷,专业 ...

  8. [WCF REST] Web消息主体风格(Message Body Style)

    对于Web HTTP编程模型来说,服务契约中作为操作的方法无须应用OperationContractAttribute特性,只需要根据需要应用WebGetAttribute与WebInvokeAttr ...

  9. ASP.NET数据绑定技术

    1.DataBinder.Eval()方法 DataBinder.Eval()方法是ASP.NET框架支持的一个静态方法,用来计算Late_Bound(后期绑定)数据绑定表达式,并随时将结果转换为字符 ...

  10. 简易的可拖动的桌面悬浮窗效果Demo

    首先,我们需要知道,悬浮窗分为两种:Activity级别的悬浮窗,系统级别的悬浮窗 Activity级别的悬浮窗跟随所属Activity的生命周期而变化,而系统级别的悬浮窗则可以脱离Activity而 ...