MATLAB 上的 Z 变换极点和零点位置
Posted
技术标签:
【中文标题】MATLAB 上的 Z 变换极点和零点位置【英文标题】:Z-Transform Poles and Zeros Locations on MATLAB 【发布时间】:2017-05-10 11:37:27 【问题描述】:我正在实现如下所述的 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
,这是正确的,但是当我尝试绘制 Zeros 位置时,我在原点找到了一个极点。然而系统的脉冲响应是正确的,但它只是向右移动了一个。为什么还会出现这种情况?
我想不通的是,为什么原点有一个极点,为什么单位圆外有一些零点。
close all;clear;clc;
Ts = 0.1;
num = [1, 2, 4, 2, 1];
den = 1;
HZ = tf(num, den, Ts, 'variable', 'z^-1')
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 我明白你的意思,但你的解决方案需要符号表达式,我想计算数值。 反转你的数字并使用 den 作为[1,0,0,0,0]
例如。您也可以为此使用信号处理工具箱的过滤命令
@percusse 你的意思是我用'Z'
而不是'z^-1'
?
如果您想要 z 的逆幂,请使用 filt(num,den,0.1)
。它会做你想做的事
【参考方案1】:
你的冲动反应是HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4
因此对于z = 0 i.e Origin
,脉冲响应是infinity/undefined
,因此按照惯例z=0
应该是一个极点。
而且由于您的脉冲响应是“有限持续时间”,ROC
是whole Z-Plain except 0
,并且 ROC 可以包含零点但不能包含极点。因此,您在单位圆之外有零。
无论如何,您始终可以将 HZ = 0 并计算 Z 的值(方程为 4 级,应该有 4 个值。)
【讨论】:
外部的零使系统不稳定,然而,它是一个有限脉冲系统,在这个例子中必须是一个稳定的。 我不知道零,但我读到如果 ROC 包含单位圆系统应该是稳定的。 您的部分答案是正确的,我阅读了稳定性和因果关系,发现稳定性仅在单位圆内或单位圆外的极点上起作用。但我不了解原点的极点。 @OsamaAbbas,让我看看我是否可以澄清 Pole 是函数变为未定义/无穷大的任何点 对吗?现在你的impulse response is HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4
。这是一个几何级数,5 个项和 z^-1 作为公比。现在,如果我们使用 G.P 总和的公式,我们得到 HZ = (1 - z^5)/z^4(1-z)
现在尝试将 z=0
放入其中,看看你是否得到无穷大:)。你可以随时输入z=0 in HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4
,你仍然会得到infinity
作为1*z^-1 at z = 0 equals 1*1/0 = infinity
您的回答有点方便,但我确信原点处的极点提供了非常高的增益,但脉冲响应并未接近无穷大。因此,绘制原点处的极点是有原因的。如果你把光标放在原点的极点上,你可以看到它的特性,超调是 NaN,这让我说你的答案有点方便。以上是关于MATLAB 上的 Z 变换极点和零点位置的主要内容,如果未能解决你的问题,请参考以下文章