对于超宽带(UWB)信号,相对带宽或带宽及中心频率是其中两个重要的参数。如果已经得到UWB信号谱,那么通过信号谱如何来计算带宽及中心频率呢?
一般来说,UWB信号谱可以通过直接测量或者由OptiSystem得到,是离散谱。通过拟合的方法,可以求得其中心频率及带宽。以下是自定义的求中心频率和带宽的函数find_UWB
对于使用OS得到的UWB信号谱:posi_1_1_f.txt,调用该函数,计算其中心频率及带宽,如下:
结果为:
find_UWB.rar call_find_UWB.rar posi_1_1_f.txt
一般来说,UWB信号谱可以通过直接测量或者由OptiSystem得到,是离散谱。通过拟合的方法,可以求得其中心频率及带宽。以下是自定义的求中心频率和带宽的函数find_UWB
- %==========================================================================
- %Name: function [cw,bw_low,bw_up,val_low,val_up,val_max]=find_UWB(filename)
- %Desc: 已知由OptiSystem产生的UWB脉冲的频谱文件(.txt),
- % 求其中心频率和-10dB带宽
- %Parameter: [in]finename,UWB频谱文件,该频谱文件已经去除了直流
- %Return: [out]cw,返回中心频率的值
- % [out]bw_low,返回-10dB带宽所对应的低端频率
- % [out]bw_up,返回-10dB带宽所对应的高端频率
- % [out]val_low,返回bw_low所对应的UWB频谱值(dBm)
- % [out]val_up,返回bw_up所对应的UWB频谱值(dBm)
- % [out]val_max,返回UWB频谱最大值(dBm)
- %Author: yoyoba(stuyou@126.com)
- %Date: 2014-1-7
- %Modify: 2014-1-7
- %=========================================================================
- function [cw,bw_low,bw_up,val_low,val_up,val_max]=find_UWB(filename)
- uwb=load(filename); %已除去直流分量的UWB频谱
- uwb_f=uwb(:,1); %读入频率值
- uwb_val=uwb(:,2); %读入频谱值
- imax=find(diff(sign(diff(uwb_val)))==-2)+1; %由OptiSystem产生的UWB频谱是离散谱
- %有些频点的值为0,为了后续的数据拟合,需要把不为0的点单独提取出来,即寻找极大值
- uwb_val_max=uwb_val(imax); %频谱中的一系列极大值
- uwb_ff_max=uwb_f(imax); %极大值所对应的频率点
- p5_uwb_val_max=polyfit(uwb_ff_max,uwb_val_max,5); %5阶多项式差值
- deltaf=uwb_ff_max(1):1e+6:uwb_ff_max(end); %频率间隔1MHz
- p5val=polyval(p5_uwb_val_max,deltaf); %计算频率间隔为1MHz对应的频谱值
- [p5max,ip5max]=max(p5val); %频谱最大值及所在位置
- p5max_10dB=p5max-10; %最大值-10dB
- p5val_10dB=p5val-p5max_10dB; %频谱值-10dB
- ibw=find(diff(sign(diff(abs(p5val_10dB))))==2)+1; %寻找频谱值-10dB之后绝对值的最小值的位置
- bw_low=deltaf(ibw(1)); %-10dB带宽低端频率
- bw_up=deltaf(ibw(2)); %-10dB带宽高端频率
- val_low=p5val(ibw(1)); %bw_low所对应的UWB频谱值(dBm)
- val_up=p5val(ibw(2)); %bw_up所对应的UWB频谱值(dBm)
- val_max=p5max; %UWB频谱最大值(dBm)
- cw=bw_low+(bw_up-bw_low)/2; %中心频率
- filename='posi_1_1_f.txt';
- [cw,bw_low,bw_up,val_low,val_up,val_max]=find_UWB(filename);
- uwb=load(filename);
- plot(uwb(:,1)*1e-9,uwb(:,2),'k','linewidth',2);
- hold on
- plot([bwlow,bwup]*1e-9,[val_low,val_up],'r','linewidth',2);
- axis([0,15,-100,-75]);
- xlabel('Frequency(GHz)');
- ylabel('Power (dBm)');
- set(get(gca,'XLabel'),'FontSize',14,'FontName','Times New Roman');
- set(get(gca,'YLabel'),'FontSize',14,'FontName','Times New Roman');
- set(gca,'FontName','Times New Roman','FontSize',14)
结果为:
find_UWB.rar call_find_UWB.rar posi_1_1_f.txt