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

时间:2016-12-25 19:23:03

标签: matlab function filter transfer digital

我正在实施如下所述的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])

1 个答案:

答案 0 :(得分:1)

你的冲动回复是HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4 因此对于z = 0 i.e Origin,脉冲响应是infinity/undefined,因此按惯例z=0应该是一个极点。 因为您的脉冲响应是“有限持续时间”。 ROCwhole Z-Plain except 0,ROC可以包含零而不是极点。因此,你在单位圆外面有零。 无论如何,你总是可以把HZ = 0并计算出Z值(等式为4度,应该有4个值。)