使用matlab导出16进制的数据(第一次使用fopen,fprintf,dec2hex时需要避开的坑)

您所在的位置:网站首页 matlab怎么输出文本 使用matlab导出16进制的数据(第一次使用fopen,fprintf,dec2hex时需要避开的坑)

使用matlab导出16进制的数据(第一次使用fopen,fprintf,dec2hex时需要避开的坑)

2023-09-03 23:47| 来源: 网络整理| 查看: 265

使用matlab导出16进制的数据(第一次使用fopen,fprintf,dec2hex时需要避开的坑) matlab进行数据类型的转换与数据的导出任务需求遇到问题

matlab进行数据类型的转换与数据的导出 任务需求

产生一个正弦信号,并将其转换位变为8位的数据,并输出,需要导出的数据位16进制的.coe文件

clc; clear; N=2^10; F=2^8; s_p = 0:1024; t=s_p/N; sin_data=sin(2*pi*t); %%定点化 fix_sin_data=fix(sin_data*127); %%负数使用补码进行表示 for i = 1:N+1 if fix_sin_data(i) < 0 fix_sin_data(i)= F +fix_sin_data(i); else fix_sin_data(i) = fix_sin_data(i); end end %%转换为16进制的数 fix_sin_data_hex=dec2hex(fix_sin_data); %%变为.coe文件 fid=fopen('ROM_8_1024.coe','w+'); fprintf(fid,'MEMORY_INITIALIZATION_RADIX=16;\n'); fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=\n'); for i=1 : N-1 % fprintf(fid,'%s, \n',fix_sin_data_hex(i)); fprintf(fid,'%c%c,\n',fix_sin_data_hex(i,1),fix_sin_data_hex(i,2)); end fprintf(fid,'%c%c;\n',fix_sin_data_hex(N,1),fix_sin_data_hex(N,2)); fclose(fid); 遇到问题

在设计过程中前面都没有问题,但是经过dec2hex时会将数值型的数据转换为char型,注意不是字符串型实字符型,所以在写文件的时候不能用s%,应该用c%,因为是N*2的数据大小,所以对于每一行的数据应该读取两次。不然会使输出结果为下图或没有结果。在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3