MATLAB中Z变换极点和零点的位置

3
我正在实现一个FIR滤波器,其描述如下:
y(n) = x(n) + 2x(n-1) + 4x(n-2) + 2x(n-3) + x(n-4)

在这个系统中没有极点。
使用MATLAB计算传递函数,得出的 HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4 是正确的,但是当我尝试绘制零点位置时,发现原点处有一个极点。然而,系统的脉冲响应是正确的,只是向右移动了一个单位。为什么会发生这种情况?
我无法理解的是,为什么原点处有一个极点,为什么有一些零点在单位圆外。
close all;clear;clc;

Ts = 0.1;

num = [1, 2, 4, 2, 1];
den = 1;

HZ = tf(num, den, Ts, 'variable', 'z^-1')

Pole zero map

impulse response

figure(1)
pzplot(HZ)
axis equal

figure(2)
stem(impulse(HZ*Ts), 'linewidth', 1)
xlabel('n', 'FontSize', 13)
ylabel('h(n)', 'FontSize', 13)
title('Impulse Response')
grid minor
axis([0 10 0 max(num)+0.1])

FIR 滤波器包含与它们的零点一样多的极点,但它们都位于原点。将 num 和 den 都乘以 z^4。 - percusse
@percusse 我明白你的意思,但是你的解决方案需要使用符号表达式,而我想计算数值。 - Tes3awy
反转您的数字,并使用 [1,0,0,0,0] 作为 den,例如。您还可以使用信号处理工具箱的滤波器命令来实现此操作。 - percusse
@percusse 您的意思是我应该使用'Z'而不是'z^-1'吗? - Tes3awy
如果您想要z的倒数幂,则使用filt(num,den,0.1)。它会实现您想要的功能。 - percusse
1个回答

1
你的冲激响应是HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4,因此当z = 0即原点时,冲激响应为无穷大/未定义,因此按照惯例,z=0应该是一个极点。 由于你的冲激响应是“有限持续时间”,所以ROC整个Z平面除了0,ROC可以包含零但不包含极点。因此,在单位圆外有零点。 无论如何,你总是可以将HZ = 0,然后计算Z的值(该方程的次数为4,应该有4个值)。

零点在系统外会使其不稳定,但它是一个有限脉冲系统,在这个例子中必须是一个稳定的系统。 - Tes3awy
我不知道零点,但我读到如果ROC包含单位圆,系统应该是稳定的。 - Mahaveer
你的回答部分正确,我了解了稳定性和因果性,并发现稳定性只与极点在单位圆内或外有关。但是我不理解原点处的极点。 - Tes3awy
@OsamaAbbas,让我们看看我是否可以澄清一下,_极点是函数变为未定义/无穷大的任何点_,对吗?现在你的脉冲响应是HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4。这是一个具有5个项和z^-1作为公比的等比级数。现在,如果我们使用等比级数求和公式,我们得到HZ = (1 - z^5)/z^4(1-z),现在尝试将z=0代入其中,看看是否会得到无穷大 :)。您始终可以将z=0放入HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4中,您仍将获得infinity,因为z = 0时,1*z^-1等于1*1/0 = infinity - Mahaveer
你的回答有些方便,但我确信原点处的极点会给出非常高的增益,然而脉冲响应并没有趋近于无穷大。因此,原点处的极点是有原因绘制的。如果你把光标放在原点处的极点上,你可以看到它的特性,超调量为NaN,这让我说你的回答有些方便。 - Tes3awy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接