十六进制补码文件(hex)的matlab产生方法
1、编写matlab脚本文件,定义位宽32位,将AD采样数据,正余弦数据转化为32位hex文件。
% define width
N = 32;
2、打开文档。
% open files
AD_FILE = fopen('AD_DATA.hex','w');
SIN_FILE = fopen('SIN_VALUE.hex','w');
COS_FILE = fopen('COS_VALUE.hex','w')
3、将数据转化为给定位宽的16进制补码。
% transfer AD data into hex unit
for i=1:length(data)
if(data(i,1)>=0)
fprintf(AD_FILE, '%8x\n',floor(data(i,1)*(2^31-1)));
else
fprintf(AD_FILE, '%8x\n',floor(2^N +data(i,1)*(2^31-1)));
end
end
% transfer sin/cos data into hex unit
for i=1:length(ref_drvi)
if(ref_drvi(i,1)>=0)
fprintf(SIN_FILE, '%8x\n',floor(ref_drvi(i,1)*(2^31-1)));
else
fprintf(SIN_FILE, '%8x\n',floor(2^N +ref_drvi(i,1)*(2^31-1)));
end
end
for i=1:length(ref_drvq)
if(ref_drvq(i,1)>=0)
fprintf(COS_FILE, '%8x\n',floor(ref_drvq(i,1)*(2^31-1)));
else
fprintf(COS_FILE, '%8x\n',floor(2^N +ref_drvq(i,1)*(2^31-1)));
end
end
4、关闭文档。
% close files
fclose(AD_FILE);
fclose(SIN_FILE);
fclose(COS_FILE);