freqz() not behaving as expected?

6 views (last 30 days)
Xiangguang
Xiangguang on 6 Jun 2023
Edited: Paul on 6 Jun 2023
I have noticed something abnormal about freqz() not as expected. For example, I want to plot a response of a delay z^-n, so I put in this code:
b = 1;
a = [1 0 0 0];
[h,w] = freqz(b, a, 1000);
plot(w, angle(h));
I expect to get a linear phase slope waveform of sawtooth. Instead I got a flat line at 0.
Also, I try to plot the phase response of an integrator:
b = 1;
a = [1 -1];
[h,w] = freqz(b,a,1000);
plot(w, angle(h));
grid;
I expect to get a phase line sloping down starting from -pi/2 to -pi. Instead it plots a line slopping up. This is strange.

Answers (1)

Paul
Paul on 6 Jun 2023
Edited: Paul on 6 Jun 2023
The b and a inputs to freqz are the coefficients in ascending powers of z^-1. So this case
b = 1;
a = [1 0 0 0];
really means:
H(z) = 1/(1 + 0*z^-1 + 0z^-2 + 0*z^-3) = 1,
which is exactly what freqz produces
figure
freqz(b, a, 1000);
If you want H(z) = z^-3, then we'd have
b = [0 0 0 1];
a = 1;
figure
freqz(b,a,1000)
  1 Comment
Xiangguang
Xiangguang on 6 Jun 2023
Edited: Xiangguang on 6 Jun 2023
Thanks a lot. You saved me headache.

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!