我是靠谱客的博主 开朗马里奥,最近开发中收集的这篇文章主要介绍matlab群延时函数,群延迟函数(group delay function)&群延迟滤波器 | 学步园,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近看了许多介绍Group delay function的论文,文章中大篇幅提到Group delay,group delay of digital filters,对这个方面的知识好像还挺有用的,所以想把它记录下来。然后总结下计算Group delay function的步骤。

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

599fb716d332023729be1fa8382635f9.png      (1)

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

f19da388207add658e15827f9f159bba.png      (2)

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

605182c49752bfcf6a5756904bff77be.png     (3)

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

b31dc97fa2877fc943e2048670dfb341.png   (4)

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

df61b5f27767a41ea21690f6df690388.png     (5)

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

jd[H(ω)]/dω = n·h(n) 的DTFT

M(ω)•ejΦ(ω) =H(ω) =h(n) DDTFT

–d[Φ(ω)]/dω = 群延迟滤波器(group delay of the filter )

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

d9c5ef757f47460da61558a0ec4e4688.png     (6)

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

07770dca0b34b4dd959775a4e1590e3c.png   (7)

从上面的公式看出,计算群延迟滤波器的过程。公式(7)是传统群延迟h(n)]值为0的情况。

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

clear, clc

Npts = 128; % 画图点数

B = [0.03, 0.0605, 0.121, 0.0605, 0.03];

A = [1, -1.194, 0.436];

Imp_Resp_Length = 40;

[Imp_Resp,n] = impz(B,A,Imp_Resp_Length);

ImpResp_times_Time = Imp_Resp.*n;

[Freq_Resp, W] = freqz(Imp_Resp, 1, Npts, 'whole');

[Deriv_of_Freq_Resp, W] = freqz(ImpResp_times_Time, ...

1, Npts, 'whole');

Grp_Delay = real(Deriv_of_Freq_Resp./Freq_Resp);

%[gdm, fgm] = grpdelay(B,A,Npts,'whole');gdm=Grp_Delay,w=fgm(rad) % Compute Group Delay

Grp_Delay = fftshift(Grp_Delay);% 将序列中后半部分循环移动到前面

Freq = (W-pi)/(2*pi); % 频率轴

figure(1), clf

subplot(2,1,1)

plot(n, Imp_Resp, '-ks', ...

n, ImpResp_times_Time, '-bs', 'markersize', 4)

legend('h(n)','n times h(n)');

ylabel('Amplitude'), xlabel('n'), grid on, zoom on

subplot(2,1,2)

plot(Freq, Grp_Delay,'-rs', 'markersize', 4)

ylabel('Group Delay (samples)')

xlabel('Freq x Fs (Fs = sample rate)')

grid on, zoom on

1353157921_6976.jpg

最后

以上就是开朗马里奥为你收集整理的matlab群延时函数,群延迟函数(group delay function)&群延迟滤波器 | 学步园的全部内容,希望文章能够帮你解决matlab群延时函数,群延迟函数(group delay function)&群延迟滤波器 | 学步园所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部