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. datagrid动态数据添加超链接的方法

    首先,我我们要有一个json格式的datagrid_data.json文件,如下:

  2. 并发式IO的解决方案:多路非阻塞式IO、多路复用、异步IO

    在Linux应用编程中的并发式IO的三种解决方案是: (1) 多路非阻塞式IO (2) 多路复用 (3) 异步IO 以下代码将以操作鼠标和键盘为实例来演示. 1. 多路非阻塞式IO 多路非阻塞式IO访 ...

  3. Ubuntu配置任意版本的apt-get镜像

    我们知道,迄今为止,Ubuntu已有多个发行版,如11.04.11.10,以至于现在最新的16.*.而我们平常通过apt-get来安装软件,如果OS版本不同,那么镜像源的配置就不同,否则就会出现找不到 ...

  4. ASP.NET Core 1.0开发Web API程序

    .NET Core版本:1.0.0-rc2Visual Studio版本:Microsoft Visual Studio Community 2015 Update 2开发及运行平台:Windows ...

  5. ASP.NET验证码生成与识别

    一般验证码页面只输出一个图片而不进行其他业务处理,所以验证码一般放在一般处理程序(httpHandler)页面中,而如果将验证码生成代码放到一般处理程序中,要将生成验证码保存在Session中,这里我 ...

  6. jQuery 的 ajax

    jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. $(selector).load ...

  7. .NET破解之google瓦片下载及拼接

    由于最近一些其他事忙,加之电脑显卡坏了,所以,好长一段时间没有更新博客了,感觉对不注关注我的朋友.从本文开始,博客更新频率将会大大降低,但每周都会更新的. 在上帝之眼论坛看到了新出来了一个google ...

  8. SharePoint 2013 开启访问请求

    1.通常,我们进入SharePoint 2013站点,如果没权限会提示该站点未被共享,而没有切换账号或者申请访问,实在是很流氓:其实,SharePoint为我们提供了访问请求页面,但是可能需要手动开启 ...

  9. ArcGIS 10 SP5中文版(ArcGIS10补丁5中文版)

    下载地址:百度网盘下载地址:http://pan.baidu.com/s/1o7qPGhk 来自:http://zhihu.esrichina.com.cn/?/sort_type-new__day- ...

  10. UWP开发中的流媒体

    写这篇的目的只是为了记住这个东西, win10原生支持HLS了 AdaptiveMediaSourceCreationResult amsResult = await AdaptiveMediaSou ...