数字滤波器分析---相位响应
MATLAB® 函数可用于提取滤波器的相位响应。在给定频率响应的情况下,函数 abs
返回幅值,angle
返回以弧度为单位的相位角。要使用 fvtool
查看巴特沃斯滤波器的幅值和相位,请使用:
d = designfilt('lowpassiir','FilterOrder',9, ...
'HalfPowerFrequency',400,'SampleRate',2000);
fvtool(d,'Analysis','freq')
![Figure Figure 1: Magnitude Response (dB) and Phase Response contains an axes object. The axes object with title Magnitude Response (dB) and Phase Response, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.](https://i-blog.csdnimg.cn/blog_migrate/3c61ee9c890f397a656bcd6161e78f6f.png)
您也可以点击工具栏上的幅值和相位响应按钮,或选择分析 > 幅值和相位响应显示绘图。
unwrap
函数在频率分析中也很有用。unwrap
根据需要对相位增减若干个 360° 以将其展开,使之在 360° 相位不连续点处保持连续。要了解 unwrap
的作用,请设计一个 25 阶低通 FIR 滤波器:
h = fir1(25,0.4);
用 freqz
获得频率响应,并以度为单位绘制相位:
[H,f] = freqz(h,1,512,2);
plot(f,angle(H)*180/pi)
grid
很难将 360° 跳跃(由 angle
中反正切函数的定义导致)与 180° 跳跃(表示频率响应为零)区分开来。
unwrap
消除了 360° 跳跃:
plot(f,unwrap(angle(H))*180/pi)
![Figure contains an axes object. The axes object contains an object of type line.](https://i-blog.csdnimg.cn/blog_migrate/fee767afb6c85532cd9e8c60168a5f8d.png)
您也可以使用 phasez
查看展开的相位:
phasez(h,1)