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. FreeBSD 10 发布

    发行注记:http://www.freebsd.org/releases/10.0R/relnotes.html 下文翻译中... 主要有安全问题修复.新的驱动与硬件支持.新的命名/选项.主要bug修 ...

  2. floyd离散,最小环

    Description 杭州有N个景区,景区之间有一些双向的路来连接,现在8600想找一条旅游路线,这个路线从A点出发并且最后回到A点,假设经过的路线为V1,V2,....VK,V1,那么必须满足K& ...

  3. jetty加载spring-context容器源码分析

    带着疑问开始 web.xml的顺序问题 先拿一个最简单的spring mvc web.xml来说问题,如下图:如果我将三者的顺序倒置或是乱置,会产生什么结果呢? 启动报错?还是加载未知结果?还是毫无影 ...

  4. winform(公共控件)

    一.客户端设计思路 1.理顺设计思路,架构框架 2.设计界面 3.编写后台代码 4.数据库访问 二.公共控件 1.Button(按钮): ⑴ Enabled :确定是否启用控件 ⑵ Visible:确 ...

  5. 【高级功能】使用canvas元素(第二部分)

    本文将继续介绍canvas的功能,展示如何绘制更复杂的图形(包括圆弧和曲线),如何使用剪裁区域来限制操作以及如何绘制文本.还是介绍可以应用在画布上的特效和变换,包括阴影.透明度.旋转和坐标重映射. 1 ...

  6. ASP.NET数据绑定技术

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

  7. andriod CheckBox

    <?xml version="1.0" encoding="UTF-8"?> <LinearLayout android:orientatio ...

  8. VS2010运行正常的控制台程序在VS2015中出现乱码的解决方法

    以前在Visual Stuido 2010中运行正常的控制台程序,在Visual Studio 2015中出现乱码,找到<Visual Studio 2015的坑:中文字符串编译后成乱码> ...

  9. 2015年第8本(英文第7本):the city of ember 微光城市

    书名:the City of Ember(中文名:微光城市) 作者:Jeanne DuPrau 单词数:6.2万 不重复单词数:未知 首万词不重复单词数:未知 蓝思值:未知 阅读时间:2015年4月2 ...

  10. 安卓开发--android library projects cannot be launched错误

    最新因为学习,问技术友要了几个源代码,导入源代码的时候无法进行真机或者虚拟机测试. 原因:android library projects cannot be launched 百度了一下,解决方法很 ...