位相応答
MATLAB® 関数を使用して、フィルターの位相応答を抽出することができます。周波数応答を与えると、関数 abs
からは振幅が返され、関数 angle
からは位相角がラジアン単位で返されます。バタワース フィルターの振幅と位相を表示するには、次のようにします。
d = designfilt("lowpassiir",FilterOrder=9, ... HalfPowerFrequency=0.4); freqz(d)
関数 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)
または、関数 phasez
を使用してアンラップされた位相を表示できます。
phasez(h,1)