Signal Processing Toolbox | ![]() ![]() |
ゲインと位相
MATLABには、周波数応答ベクトルh
からゲインと位相を抽出する関数が用意されています。関数abs
は応答のゲインを出力し、angle
は位相をラジアン単位で出力します。Butterworthフィルタのゲインと位相を抽出してプロットするには、つぎのようにします。
[b,a] = butter(6,300/500); [h,w] = freqz(b,a,512,1000);
m = abs(h); p = angle(h);
semilogy(w,m);
plot(w,p*
180/pi)
関数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°のズレと周波数応答の中で零点を意味する180°のズレとを区別することは困難です。
plot(f,unwrap(angle(H))*
180/pi); grid
![]() | アナログ領域 | 遅れ | ![]() |