因果 LTI 系统的负群时延的物理意义

信息处理 matlab 线性系统 群延迟 因果关系
2021-12-24 22:20:21

我在 Matlab 中实现了示例 5.1.2“群延迟和衰减的影响”,我在 Alan Oppenheim 的离散时间信号处理第 3 版中找到。在本例中,3 个窄带信号(高0.42π, 低的0.12π和中0.22π频率),我将称之为音调,作为输入提供给具有正和负群延迟的 LTI 滤波器。该示例的目标是跟踪对系统输出中各个音调的影响。

尽管本书在这个例子中没有明确提到任何关于因果关系的内容,但我对因果系统案例很感兴趣。我已经修改了原始示例(参见代码),以在更广泛的频率范围内获得负群延迟0.42π我已经切换了输入顺序。负群延迟是通过在单位圆附近和周围放置零来实现的0.42π. 不幸的是,这会在输出端衰减这个频率。

这是系统的群延迟和零极点图。 零极点图

从群延迟周围0.42π人们可能会认为,由于群延迟是一种测量延迟,因此负群延迟意味着信号可以在进入系统之前退出系统,这与因果关系相矛盾。

这是输入为中等时系统的输出(0.22π), 低的 (0.12π) 和高 (0.42π) 频率窄带信号的顺序:

中等优先

  1. 认为高频的音调(0.42π) 已经提前(移向时间原点),即使由于衰减我们看不到它?有点认为它已经以低频切换了位置(0.12π)。即,具有中、低、高输入,输出为中、高、低。

  2. 这是一个非因果系统使用缓冲区造成因果关系,因为它使用高音之前的样本能够将其转移到那里?

  3. 如果首先放置高频音调,因为它无法移动到该位置之前,假设滤波器将施加延迟以执行因果滤波是否正确?

高频优先

  1. 我已经看到,对于因果系统,全通系统会带来正的群延迟。是否有可能有一个具有负群延迟的因果稳定 LTI 滤波器?有没有可能它在这个波段附近没有接近零的幅度?

这篇文章说负群延迟并不意味着因果系统的时间提前。相反,对于群延迟为负的频带中的信号,滤波器会尝试预测输入如果信号可以从过去的值预测,那么这会带来时间提前的错觉。但这并不是问题 4 的真正答案。

这是我的代码:

tiempo = 1:200;

tono1 = hamming(length(tiempo))'.*cos(0.2*pi*tiempo);
tono2 = hamming(length(tiempo))'.*cos(0.4*pi*tiempo - pi/2);
tono3 = hamming(length(tiempo))'.*cos(0.8*pi*tiempo + pi/5);

%original sequence from the example
%secuencia = [tono3 tono1 tono2 zeros(1,2*length(tiempo))] ;

%illustrative sequence
secuencia = [tono2 tono1 tono3 zeros(1,2*length(tiempo))] ;

figure
subplot(2,1,1)
plot(secuencia)
subplot(2,1,2)
plot(linspace(-pi,pi,length(secuencia)),abs(fftshift(fft(secuencia))))

% My modified system    
Num = [0.0680369323869657,-0.148751468103317,-0.0840727385654123,0.433116714755249,0.194034734683412,-1.18139470037352,0.0865655483581989,1.87573223477322,-0.293287926967094,-2.71438209027864,0.967801050690298,2.73479750957294,-1.12373673157765,-2.50948341257372,1.33900328885438,1.60284621216217,-0.912031371991086,-0.934571172916517,0.623244740868535,0.316805565059412,-0.216878871699853,-0.101146864726266,0.0801206879869380];
Den = [1,-4.06364506017978,5.66323235132978,0.124350390160437,-7.36267038756774,1.97922786687038,11.0014898216757,-9.54873204176815,-5.37236943566056,9.75531866728175,0.420222506724089,-5.86926610519296,1.27627523253023,2.30928781145590,-1.18242719020123,0.106216188692196,-0.119037174950185,-0.0591088940098283,0.289996632822651,-0.260065787926090,0.248585836431488,-0.184399072803746,0.0647608900392396];

% Hd = dsp.IIRFilter('Numerator', Num, 'Denominator', Den);
% Hd = dfilt.df2t(Num, Den);

resultado = filter(Num,Den,secuencia);

figure
subplot(2,1,1)
plot(resultado)   
subplot(2,1,2)
plot(linspace(-pi,pi,length(resultado)),abs(fftshift(fft(resultado))))
2个回答

因为还没有人回答我的问题。我将尝试自己部分回答。但是,即使我接受它作为最终答案,如果另一个用户详细说明了更好的答案,我也可以撤销它,我认为这是可能的。

在研究了上述文章给出的关于如何在因果系统中获得分段正群延迟的建议后,我意识到他们提出的系统类似于陷波滤波器的逆系统。

文章提出的原始系统有以下幅度响应、群延迟和极点和零点图: 原系统

从之前的图像中,我看到该系统的行为类似于在 Matlab 的滤波器设计器工具中设计的“峰值滤波器”,只不过它不是只让一个窄频带通过并衰减其他频带,而是放大一个窄频带而让其他频带保持不变。该系统在幅度峰值的两侧都表现出负群延迟然而,它只是几个样本,也许是-5。

后来我通过移动极点和零点来修改它0.5π能够更好地观察其影响,并通过对齐零点和极点以具有相同的相位角,就像在 IIR 陷波滤波器中一样。然而,我没有将零点放在更靠近单位圆的位置,而是将极点放在更靠近单位圆的位置,就好像这个分段负群延迟系统是陷波滤波器的倒数一样。这样,我在峰值的两侧实现了类似的负群延迟。

陷波滤波器(左)和文章滤波器(右)的对比如下图所示:

比较

可以注意到,陷波滤波器引入的负群延迟对于窄频带的幅度大于原始系统的幅度。作为一个结论,到目前为止我已经观察到,在因果系统中,靠近单位圆的零点引入了产生负群延迟的那种相位失真。越接近单位圆,群时延越负。不幸的是,频率响应也衰减得更多。

回答我的问题:

认为高频的音调(0.42π) 已经提前(移向时间原点),即使由于衰减我们看不到它?有点认为它已经以低频切换了位置(0.12π)。即,具有中、低、高输入,输出为中、高、低。

从文章中提取主要思想:负群延迟并不意味着因果系统中的时间提前。相反,对于群延迟为负的频带中的信号,滤波器会尝试预测输入。如果信号可以从过去的值(如汉明脉冲)预测,那么这会带来时间提前的错觉当信号包含不可预测的事件(汉明脉冲的截断)时,这种错觉就会消失。

我已经看到,对于因果系统,全通系统会带来正的群延迟。是否有可能有一个具有负群延迟的因果稳定 LTI 滤波器?有没有可能它在这个波段附近没有接近零的幅度?

在我迄今为止看到的因果系统中(我与@a 有关公民一致)你不能制作一个只有负时间延迟的稳定过滤器,只有“下降”,到处都是。这些“下降”是由接近单位圆的价值传递函数的零点引起的。如果在具有正群延迟的频带中需要不接近零的系统幅度,则必须在传递函数零点附近引入传递函数极点,这将倾向于减少这些频带中群延迟的负性。所以我还没有找到一种在不使系统幅度接近零的情况下引入大时间提前的实用方法。

这是一个非因果系统使用缓冲区造成因果关系,因为它使用高音之前的样本能够将其转移到那里?

为了真正及时推进具有负群延迟的频带,系统需要是非因果的。

当前响应取决于输入的未来值的系统是非因果的,不能实时实现。但是,如果在系统输入之前放置一个长度为最大负群延迟的缓冲区,并且系统被修改为使用来自该缓冲区的样本(这相当于“在未来”使用样本),那么非因果系统将表现为因果关系。在获得适当的输出之前具有最大负群延迟采样流水线的排序。

但是我不确定这里是否是这种情况,因为 Matlab 中的 filtfilt 命令假设消除非线性相位滤波的贡献和任何群延迟效应,产生与应该的音调的 filter 命令相同的结果及时推进。这可以在下面的图片中看到,其中延迟的音调在每种情况下都被 filtfilt(左下图)带回原位,但应该提前的音调没有移动:

过滤

过滤网 2

如果首先放置高频音调,因为它无法移动到该位置之前,假设滤波器将施加延迟以执行因果滤波是否正确?

对此我仍然没有任何解释!

负群延迟仅与更大更正延迟有关。如果一个区域 fc1 中的能量延迟了 5ms 的群延迟,而另一个区域 fc2 的群延迟为 -3ms,则 fc2 将比 fc1 提前 8ms 到达,因为它已经通过了滤波器。