Given a discrete time impulse response $h[n]$ of a system, is there a way to plot its poles and zeros in MATLAB? The input impulse response can be variable, so I can't compute its transfer function before hand. I have seen several options where given the $H(z)$ you can plot the Pole-Zero diagram but couldn't find any which computes it using just $h[n]$.
1 Answer
Since your response is finite, your system corresponds to a FIR filter, where the coefficients are given by the values of the impulse response. Hence, you can perform Z-Transform of the FIR and find its zeros. Finally, since you would just need to calculate the zeros of the nominator polynomial. See this MATLAB code, following your impulse response example:
h = [1 0 -2 0 0 3];
b = h; % the FIR coefficients of a filter
roots(b)
zplane(b,1);
Output:
ans =
-1.6379
1.2438 + 0.4498i
1.2438 - 0.4498i
-0.4248 + 0.9309i
-0.4248 - 0.9309i
So, the zeros are directly given by the roots. For the poles, you have (N-1) poles at the origin.
Also, have a look at e.g. this answer.
-
$\begingroup$ Many thanks for the help. Not sure how did I miss this trivial thing!!!! $\endgroup$– akiproCommented Jan 16, 2017 at 9:27
h[n] = d[n] -2*d[n-2] + 3*d[n-5]
$\endgroup$