加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

转:群延迟函数(group delay function)

(2014-09-09 11:06:21)
标签:

教育

 假设有N个样本的脉冲响应为h(n)的数字滤波器,n为时间序列标号,对该数字滤波器进行离散时间傅里叶变换(discrete-time Fourier transform (DTFT)),H(ω),用极点的方式表示如下:

http://www.dsprelated.com/blogimages/RickLyons/Group_Delay_Eq_1.jpgdelay function)" />      (1)

在公式(1), M(ω) 是滤波器的频幅响应, Φ(ω) 是滤波器的相频响应 , ω 是连续的角频率,单位为弧度每秒rad/s ,用H(ω)对 ω求导, 得到如下的等式:

http://www.dsprelated.com/blogimages/RickLyons/Group_Delay_Eq_2.jpgdelay function)" />      (2)

用公式 (2) 除以M(ω), 写成如下的形式:

http://www.dsprelated.com/blogimages/RickLyons/Group_Delay_Eq_3.jpgdelay function)" />      (3)

对公式(3)的右边第一项进行求导展开,得到如下的形式:

http://www.dsprelated.com/blogimages/RickLyons/Group_Delay_Eq_4.jpgdelay function)" />      (4)

对等式(4)两边同时除以j/ejΦ(ω) 得到如下等式:

http://www.dsprelated.com/blogimages/RickLyons/Group_Delay_Eq_5.jpgdelay function)" />      (5)

从上面的等式(5)我们能得到什么呢?通过观察,我们发现如下熟悉的项:

  • jd[H(ω)]/dω = n·h(n) 的DTFT
  • M(ω)•ejΦ(ω) =H(ω) =h(n) DDTFT
  • –d[Φ(ω)]/dω = 群延迟滤波器(group delay of the filter )

 现在可以把上面的公式改成更直观的形式:

 http://www.dsprelated.com/blogimages/RickLyons/Group_Delay_Eq_6.jpgdelay function)" />      (6)

用DFT代替DTFT可以得到计算群延迟数字滤波器的公式:

http://www.dsprelated.com/blogimages/RickLyons/Group_Delay_Eq_7.jpgdelay function)" />      (7)

从上面的公式看出,计算群延迟滤波器的过程。公式(7)是传统群延迟算法对相位进行解卷的过程。需要注意的是DFT[h(n)]值为0的情况。

下面用Matlab演示公式 (7)的计算过程:


 

[plain] view plaincopy
  1. clear, clc  
  2. Npts 128;  画图点数  
  3.   [0.03, 0.0605, 0.121, 0.0605, 0.03];   
  4.   [1, -1.194, 0.436];    
  5.   
  6.   Imp_Resp_Length 40;  
  7.   [Imp_Resp,n] impz(B,A,Imp_Resp_Length);  
  8.   ImpResp_times_Time Imp_Resp.*n;  
  9.   [Freq_Resp, W] freqz(Imp_Resp, 1, Npts, 'whole');  
  10.   [Deriv_of_Freq_Resp, W] freqz(ImpResp_times_Time, ...  
  11.       1, Npts, 'whole');  
  12.     
  13.   Grp_Delay real(Deriv_of_Freq_Resp./Freq_Resp);  
  14. %[gdm, fgm] grpdelay(B,A,Npts,'whole');gdm=Grp_Delay,w=fgm(rad) Compute Group Delay  
  15.   Grp_Delay fftshift(Grp_Delay);% 将序列中后半部分循环移动到前面  
  16.   Freq (W-pi)/(2*pi);  频率轴  
  17.   figure(1), clf  
  18.   subplot(2,1,1)  
  19.   plot(n, Imp_Resp, '-ks', ...  
  20.         n, ImpResp_times_Time, '-bs', 'markersize', 4)  
  21.   legend('h(n)','n times h(n)');  
  22.   ylabel('Amplitude'), xlabel('n'), grid on, zoom on  
  23.   subplot(2,1,2)  
  24.   plot(Freq, Grp_Delay,'-rs', 'markersize', 4)  
  25.   ylabel('Group Delay (samples)')  
  26.   xlabel('Freq Fs   (Fs sample rate)')  
  27.   grid on, zoom on  


 


 http://img.my.csdn.net/uploads/201211/17/1353157921_6976.jpgdelay function)" />

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有