メインコンテンツ

位相応答

MATLAB® 関数を使用して、フィルターの位相応答を抽出することができます。周波数応答を与えると、関数 abs からは振幅が返され、関数 angle からは位相角がラジアン単位で返されます。バタワース フィルターの振幅と位相を表示するには、次のようにします。

d = designfilt("lowpassiir",FilterOrder=9, ...
    HalfPowerFrequency=0.4);
freqz(d)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

関数 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

Figure contains an axes object. The axes object contains an object of type line.

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.

または、関数 phasez を使用してアンラップされた位相を表示できます。

phasez(h,1)

Figure contains an axes object. The axes object with title Phase Response, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Phase (radians) contains an object of type line.

参考

| | | |