我正在实现一个FIR滤波器,其描述如下:
在这个系统中没有极点。
使用MATLAB计算传递函数,得出的
我无法理解的是,为什么原点处有一个极点,为什么有一些零点在单位圆外。
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])
[1,0,0,0,0]
作为 den,例如。您还可以使用信号处理工具箱的滤波器命令来实现此操作。 - percusse'Z'
而不是'z^-1'
吗? - Tes3awyfilt(num,den,0.1)
。它会实现您想要的功能。 - percusse