MATLAB 上的 Z 变换极点和零点位置
Z-Transform Poles and Zeros Locations on MATLAB
我正在实施如下所述的 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')
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])
你的脉冲响应是 HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4
因此对于 z = 0 i.e Origin
脉冲响应是 infinity/undefined
因此按照惯例 z=0
应该是一个极点。
由于您的脉冲响应是 'Finite Duration',因此 ROC
是 whole Z-Plain except 0
,并且 ROC 可以包含零点但不包含极点。因此你在单位圆外有零。
无论如何,您总是可以将 HZ = 0 并计算 Z 的值(方程的次数为 4,应该有 4 个值。)
我正在实施如下所述的 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')
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])
你的脉冲响应是 HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4
因此对于 z = 0 i.e Origin
脉冲响应是 infinity/undefined
因此按照惯例 z=0
应该是一个极点。
由于您的脉冲响应是 'Finite Duration',因此 ROC
是 whole Z-Plain except 0
,并且 ROC 可以包含零点但不包含极点。因此你在单位圆外有零。
无论如何,您总是可以将 HZ = 0 并计算 Z 的值(方程的次数为 4,应该有 4 个值。)