3
votes

I am implementing an FIR Filter described as below:

y(n) = x(n) + 2x(n-1) + 4x(n-2) + 2x(n-3) + x(n-4)

Where there are no poles in this system.

Computing the transfer function on MATLAB yields HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4 which is correct, but when I try to plot the Zeros locations I find a pole at the origin. However the impulse response of the system is correct, but it's only shifted to the right side by one. Why is this also happening ?

What I cannot figure out is, why there is a pole at the origin and why there are some zeros outside the unit circle.

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
FIR filters contain poles as many as their zeros but they are all located at the origin. Multiply the both num and den by the z^4percusse
@percusse I understand what you mean, but your solution requires symbolic expressions, and I want to compute the numerical values.Tes3awy
invert your num and use den as [1,0,0,0,0] for example. You can also use filter commands of signal processing toolbox for thispercusse
@percusse You mean I use 'Z' instead of 'z^-1' ?Tes3awy
If you want the inverse powers of z then use filt(num,den,0.1). it will do what you wantpercusse

1 Answers

1
votes

your impulse response is HZ = 1 + 2 z^-1 + 4 z^-2 + 2 z^-3 + z^-4 thus for z = 0 i.e Origin the impulse response is infinity/undefined and hence by convention z=0 should be a pole. And since your impulse response is 'Finite Duration' the ROC is whole Z-Plain except 0 and ROC can contain Zeroes but not poles. Thus you have zeroes outside the unit circle. Anyways you can always put HZ = 0 and compute values of Z ( the equation is of degree 4 there should be 4 values.)