找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2914|回复: 0
打印 上一主题 下一主题
收起左侧

UWB定位实现Matlab代码 仅供参考

[复制链接]
跳转到指定楼层
楼主
分享一些我在学习UWB过程中手打下来的一些UWB仿真Matlab代码,具体内容参考葛利嘉老师的译作《超宽带无线电基础》这本书
  1. % [rect_A,dt_A]=cp0101_genrect(1e-1,1000,0);
  2. [rect_B,dt_B]=cp0101_genrect(1e-1,1000,1e3);
  3. % cp0101_bandwidth1(rect_A,dt_A,-3);
  4. cp0101_bandwidth1(rect_B,dt_B,-10);
  5. function [ss_E,f_high,f_low,BW]=cp0101_bandwidth1(signal,dt,threshold)
  6. %计算固定取样周期“dt”的“signal”的带宽,以及计算带宽所需的预知threshold

  7. %step1计算输入数据单边功率密度谱(ESD)
  8. fs=1/dt;                    %采样频率
  9. N=length(signal);           %样本数量
  10. T=N*dt;                     %窗口时间
  11. df=1/T;                     %基本频率
  12. X=fft(signal);              %快速傅里叶变换,也叫离散傅里叶变换,转换后为离散的双边振幅频谱
  13. X=X/N;                      %matlab频谱转换为傅里叶频谱
  14. ds_E=abs(X).^2/(df^2);      %双边ESD//abs(X)对X取绝对值
  15. ss_E=2.*ds_E(1:floor(N/2)); %单边ESD
  16. %STEP2我们利用迭代算法计算出相对于特定阈值的ESD的最高和最低频率,
  17. %从而估算出被检测信号所占用带宽。这种算法同时适用于基带信号和已调制信号
  18. [Epeak,index]=max(ss_E);   %Epeak为单边ESD的峰值,index是该峰值所在位置
  19. f_peak=index*df;           %频率峰值
  20. Eth=Epeak*10^(threshold/10);

  21. imax=index;
  22. E0h=ss_E(index);
  23. while (E0h>Eth)&(imax<=(N/2))
  24.     imax=imax+1;
  25.     E0h=ss_E(imax);
  26. end
  27. f_high=(imax-1)*df;
  28. imin=index;
  29. E0l=ss_E(index);
  30. while (E0h>Eth)&(imin>1)&(index>1)
  31.     imin=imin-1;
  32.     E0l=ss_E(imin);
  33. end
  34. f_low=(min(index,imin)-1)*df;
  35. BW=f_high-f_low;
  36. fprintf('\nFrequency Bandwidth = %f [HZ]\n High Frequency= %f [HZ]\nLow Frequency= %f [HZ]\n',BW,f_high,f_low);

  37. %step3 画图
  38. figure(2)
  39. frequency=linspace(0,fs/2,length(ss_E));
  40. PF=plot(frequency,ss_E);
  41. set(PF,'LineWidth',[2]);
  42. L1=line([f_high f_high],[min(ss_E) max(ss_E)]);
  43. set(L1,'Color',[0 0 0],'LineStyle',':');
  44. L1=line([f_low f_low],[min(ss_E) max(ss_E)]);
  45. set(L1,'Color',[0 0 0],'LineStyle',':');
  46. L1=line([f_low f_high],[Eth Eth]);
  47. set(L1,'LineWidth',[2],'Color','red','LineStyle',':');
  48. axis([0.8*f_low 1.2*f_high -0.1*Epeak 1.2*Epeak]);
  49. AX=gca;
  50. set(AX,'FontSize',12);
  51. T=title('Frequency domain');
  52. set(T,'FontSize',14);
  53. X=xlabel('频率  [Hz]');
  54. set(X,'FontSize',14);
  55. Y=ylabel('单边ESD  [V^2S/Hz]');
  56. set(Y,'FontSize',14);
  57. end
复制代码




代码下载,仅供参考如有错误 请指出: UWB实现.7z (6.39 KB, 下载次数: 21)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表