超宽带(UWB)信号谱的中心频率及-10dB带宽的计算(MATLAB)

对于超宽带(UWB)信号,相对带宽或带宽及中心频率是其中两个重要的参数。如果已经得到UWB信号谱,那么通过信号谱如何来计算带宽及中心频率呢?
一般来说,UWB信号谱可以通过直接测量或者由OptiSystem得到,是离散谱。通过拟合的方法,可以求得其中心频率及带宽。以下是自定义的求中心频率和带宽的函数find_UWB
 
  1. %==========================================================================
  2. %Name: function [cw,bw_low,bw_up,val_low,val_up,val_max]=find_UWB(filename)
  3. %Desc: 已知由OptiSystem产生的UWB脉冲的频谱文件(.txt)
  4. % 求其中心频率和-10dB带宽
  5. %Parameter: [in]finename,UWB频谱文件,该频谱文件已经去除了直流
  6. %Return: [out]cw,返回中心频率的值
  7. % [out]bw_low,返回-10dB带宽所对应的低端频率
  8. % [out]bw_up,返回-10dB带宽所对应的高端频率
  9. % [out]val_low,返回bw_low所对应的UWB频谱值(dBm)
  10. % [out]val_up,返回bw_up所对应的UWB频谱值(dBm)
  11. % [out]val_max,返回UWB频谱最大值(dBm)
  12. %Author: yoyoba(stuyou@126.com)
  13. %Date: 2014-1-7
  14. %Modify: 2014-1-7
  15. %=========================================================================
  16. function [cw,bw_low,bw_up,val_low,val_up,val_max]=find_UWB(filename)
  17. uwb=load(filename); %已除去直流分量的UWB频谱
  18. uwb_f=uwb(:,1); %读入频率值
  19. uwb_val=uwb(:,2); %读入频谱值
  20. imax=find(diff(sign(diff(uwb_val)))==-2)+1; %由OptiSystem产生的UWB频谱是离散谱
  21. %有些频点的值为0,为了后续的数据拟合,需要把不为0的点单独提取出来,即寻找极大值
  22. uwb_val_max=uwb_val(imax); %频谱中的一系列极大值
  23. uwb_ff_max=uwb_f(imax); %极大值所对应的频率点
  24. p5_uwb_val_max=polyfit(uwb_ff_max,uwb_val_max,5); %5阶多项式差值
  25. deltaf=uwb_ff_max(1):1e+6:uwb_ff_max(end); %频率间隔1MHz
  26. p5val=polyval(p5_uwb_val_max,deltaf); %计算频率间隔为1MHz对应的频谱值
  27. [p5max,ip5max]=max(p5val); %频谱最大值及所在位置
  28. p5max_10dB=p5max-10; %最大值-10dB
  29. p5val_10dB=p5val-p5max_10dB; %频谱值-10dB
  30. ibw=find(diff(sign(diff(abs(p5val_10dB))))==2)+1; %寻找频谱值-10dB之后绝对值的最小值的位置
  31. bw_low=deltaf(ibw(1)); %-10dB带宽低端频率
  32. bw_up=deltaf(ibw(2)); %-10dB带宽高端频率
  33. val_low=p5val(ibw(1)); %bw_low所对应的UWB频谱值(dBm)
  34. val_up=p5val(ibw(2)); %bw_up所对应的UWB频谱值(dBm)
  35. val_max=p5max; %UWB频谱最大值(dBm)
  36. cw=bw_low+(bw_up-bw_low)/2; %中心频率
对于使用OS得到的UWB信号谱:posi_1_1_f.txt,调用该函数,计算其中心频率及带宽,如下:

 
  1. filename='posi_1_1_f.txt';
  2. [cw,bw_low,bw_up,val_low,val_up,val_max]=find_UWB(filename);
  3. uwb=load(filename);
  4. plot(uwb(:,1)*1e-9,uwb(:,2),'k','linewidth',2);
  5. hold on
  6. plot([bwlow,bwup]*1e-9,[val_low,val_up],'r','linewidth',2);
  7. axis([0,15,-100,-75]);
  8. xlabel('Frequency(GHz)');
  9. ylabel('Power (dBm)');
  10. set(get(gca,'XLabel'),'FontSize',14,'FontName','Times New Roman');
  11. set(get(gca,'YLabel'),'FontSize',14,'FontName','Times New Roman');
  12. set(gca,'FontName','Times New Roman','FontSize',14)

结果为:
超宽带(UWB)信号谱的中心频率及-10dB带宽的计算(MATLAB)_第1张图片
find_UWB.rar call_find_UWB.rar posi_1_1_f.txt
 

你可能感兴趣的:(OFC)