| 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
| アナログ領域 | 遅れ | ![]() |