Main Content

位相応答

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)

参考

| | | |