许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  matlab .mat复数数组转.coe文件及还原方法

matlab .mat复数数组转.coe文件及还原方法

阅读数 2
点赞 0
article_banner


从.mat文件读取的复数数组转换成.coe文件

  • 代码如下:
  1. clear;clc;close all;
  2. load('XXXXXXX.mat')
  3. % 写入文件的数据系数coe1
  4. coe1 = power(10,4);
  5. % 补码常数const_coe,2的const_coe幂次方
  6. const_coe = 16;
  7. % 将十进制数据转成十六进制数据的位数 coe2,需要保证 FFFF(coe2个F)转换成10进制后要大于coe1且大于等于power(2,const_coe)
  8. coe2 = 4;
  9. data = sig_IQ_norm*coe1;% sig_IQ_norm:加载mat文件中的变量名称
  10. I_data = floor(real(data));% 只取数据的整数部分
  11. Q_data = floor(imag(data));
  12. I_data(I_data<0) = I_data(I_data<0)+power(2,const_coe);% 转换负数为补码
  13. Q_data(Q_data<0) = Q_data(Q_data<0)+power(2,const_coe);
  14. dataHex_real = dec2hex(I_data,coe2); % 将实部整数数据转换成coe2位16进制
  15. dataHex_imag = dec2hex(Q_data,coe2); % 将虚部整数数据转换成coe2位16进制
  16. fid = fopen('longS_longS_AC_V1.coe','w');
  17. % 写入文件说明
  18. fprintf(fid,'memory_initialization_radix= %d ;\n',coe2);
  19. fprintf(fid, 'memory_initialization_vector=\n');
  20. % 将IQ数据写入coe文件
  21. for kk = 1:size(dataHex_imag,1)
  22. fprintf(fid, '%s%s,\n', dataHex_real(kk,:),dataHex_imag(kk,:));
  23. end
  24. % 关闭文件
  25. fclose(fid);


从.coe还原数据的代码如下

  1. filename = "XXXXXX.coe";% 文件名称
  2. % 写入文件的数据系数coe1
  3. coe1 = power(10,4);
  4. % 将十进制数据转成十六进制数据的位数 bitwidth,需要保证 FFFF(bitwidth个F)转换成10进制后要大于coe1且大于等于power(2,const_coe)
  5. bitwidth = 4;
  6. % 补码常数const_coe,2的const_coe幂次方
  7. const_coe = 16;
  8. fid = fopen(filename);
  9. if fid==-1
  10. error("无法打开文件:%s",filename);
  11. end
  12. line = fgetl(fid);% 跳过前两行的数据说明
  13. line = fgetl(fid);
  14. hex_data = {};% 储存读取的数据
  15. while ~feof(fid)
  16. line = fgetl(fid);
  17. if ~isempty(line)
  18. line = strtrim(line);
  19. line = strrep(line,',',''); % 丢掉数据中的逗号
  20. hex_data{end+1} = line;
  21. end
  22. end
  23. fclose(fid);
  24. maxval = power(2,const_coe-1)-1; % 数据最大门限,大于该值则为负数的补码
  25. real_data = zeros(1,numel(hex_data));% 存储实部数据
  26. imag_data = zeros(1,numel(hex_data));% 存储虚部数据
  27. for kk = 1:numel(hex_data)
  28. cabin = hex_data{kk};
  29. realcabin = hex2dec(cabin(1:bitwidth)); % 十六进制转成十进制
  30. imagcabin = hex2dec(cabin(bitwidth+1:2*bitwidth));
  31. % 将补码还原成负数
  32. if realcabin>maxval
  33. realcabin = realcabin-power(2,const_coe);
  34. end
  35. if imagcabin>maxval
  36. imagcabin = imagcabin-power(2,const_coe);
  37. end
  38. real_data(kk) = realcabin;
  39. imag_data(kk) = imagcabin;
  40. end
  41. % 还原数据大小
  42. real_data = real_data./coe1;
  43. imag_data = imag_data./coe1;
  44. % 拼成IQ数据
  45. IQdata = real_data+1j*imag_data;
  46. figure;plot(abs(IQdata));

参考人工智能 kimi ,仅供学习使用


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空