不为巴特沃斯低通滤波器的整个频率范围生成相位图

Phase plot is not generated for entire range of frequencies for butterworth low pass filter

我想设计一个巴特沃斯低通滤波器,看看它的幅度和相位响应。我尝试了以下代码。

n = 8;     % order of filter
fs = 1000;   % sampling frequency
fc = 20;     % cutoff frequency
[b a]= butter(n,fc/(fs/2),'low');   % design low pass filter
freqz(b,a,1024,fs);

我得到以下情节:

可以看出,它没有给出所有频率范围的相位图(300 到 500 Hz 之间的频率没有相位图)。请帮助我了解此问题的原因以及如何纠正此问题?

是的,这看起来像一个错误。但是你可以制作相同的情节 'by hand':

[H,w] = freqz(b,a,1024,fs);
plot(w, unwrap(angle(H)));