⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bandwidth.m

📁 本人编写的一些uwb仿真程序,希望对大家有点用处
💻 M
字号:
%function bandwidth
%对任意输入信号求带宽
% rect_a输入信号
% dt_a输入信号采样周期
% threshold 带宽门限 单位db
% ss_e输出单边功率谱密度信号
% f_high上限频率
% f_low下限频率
% bw_a输入信号带宽

function [ss_e,f_high,f_low,bw]=bandwidth(signal,dt,threshold)

%step1 evaluation of single sided esd

fs=1/dt;   %抽样频率
n=length(signal);  %抽样点数,即fft长度
t=n*dt;          %时间窗口    
df=1/t;         %基本频率
x=fft(signal);
x=x/n;        %matlab幅度谱转为傅氏谱
ds_e=abs(x).^2/(df^2);     %双边功率谱
ss_e=2*ds_e(1:floor(n/2));  %单边功率谱

%step2 evaluation of bandwidth

[epeak,index]=max(ss_e);
f_peak=index*df;
eth=epeak*10^(threshold/10);  %门限电平

%选择上下限频率
  imax=index;
  e0h=ss_e(index);
  while (e0h>eth)&(imax<=(n/2))
      imax=imax+1;
      e0h=ss_e(imax)
  end    %搜索上限频率
  
  f_high=(imax-1)*df;
  
  imin=index;
  e0l=ss_e(index);
  while (e0l>eth)&(imin>1)&(index>1)
      imin=imin-1;
      e0l=ss_e(imin);
  end    %搜索下限频率
  
  f_low=(min(index,imin)-1)*df;
  
  bw=f_high-f_low;   %信号带宽
  
  fprintf('\nFrequency Bandwidth=%f  [Hz]\nHigh Frequency=%f [Hz]\nLow frequency=%f [Hz]',bw,f_high,f_low);
  
  %step3 graphical output
  
  figure(2)
    
   frequency=linspace(0,fs/2,length(ss_e));
   pf=plot(frequency,ss_e);
   set(pf,'linewidth',[2]);
   l1=line([f_high f_high],[min(ss_e),max(ss_e)]);
   set(l1,'color',[0 0 0],'linestyle',':')
   l1=line([f_low f_low],[min(ss_e) max(ss_e)]);
   set(l1,'color',[0 0 0],'linestyle',':')
   l1=line([f_low f_high],[eth eth]);
   set(l1,'linewidth',[2],'color','red','linestyle',':')
   axis([0.8*f_low 1.2*f_high -0.1*epeak 1.2*epeak]);
   ax=gca;
   set(ax,'fontsize',12);
   t=title('Frequency domain');
   set(t,'fontsize',14);
   x=xlabel('Frequency [Hz]');
   set(x,'fontsize',14)
   y=ylabel('Single_sided ESD  [V^2s/Hz]');
   set(y,'fontsize',14);
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -