Signal Processing Toolbox | ![]() ![]() |
Butterworthフィルタの次数選択とカットオフ周波数の計算
表示
[n,Wn]=
buttord(Wp,Ws,Rp,Rs) [n,Wn]=
buttord(Wp,Ws,Rp,Rs,'s')
詳細
buttord
は、フィルタ設計仕様を満たすディジタルまたはアナログ Butterworth フィルタの最小次数を計算します。
ディジタル領域
[n,Wn] = buttord(Wp,Ws,Rp,Rs)
は、通過帯域で Rp
dB dB 以下の減衰、遮断帯域で Rs
dB dB 以上の減衰をもつディジタルButterworth フィルタの最小次数n
を出力します。また、対応するカットオフ周波数ベクトル Wn
も出力します。これらの出力引数 n
とWn
は、関数butter
の入力になります。
つぎのテーブルに従って、遮断帯域、通過帯域を設定する入力引数を選択してください。
つぎの表を参考にして、種々のタイプのフィルタを設定してください。
ユーザのフィルタ仕様に通過帯域でのリップルの許容変化量と遮断帯域でのリップルの許容変化量がお互いに等しくない場合、表の中の設定に従ってローパスフィルタとハイパスフィルタを別々に設計し、2つのフィルタをカスケードに結合します。
アナログ領域
[n,Wn] = buttord(Wp,Ws,Rp,Rs,'s')
は、アナログ Butterworth フィルタの最小次数 n
とカットオフ周波数 Wn
を出力します。表 7-1 と同様に、周波数 Wp
(通過帯域のフィルタパラメータ)と Ws
(遮断帯域のフィルタパラメータ)を設定します。この場合、ラジアン/秒で設定する場合にのみ、通過帯域または遮断帯域は無限大に設定することができます。
関数buttord
を使って、表 7-2 "フィルタのタイプによる遮断帯域と通過帯域の設定法"に記述しているローパス、ハイパス、バンドパス、バンドストップフィルタの仕様を満たす引数を作成します。
例題
データサンプル周波数 1000 Hzで、0から40 Hzでリップルの最大変量を3 dB 以内の通過帯域とし、150 Hz からNyquist 周波数(500 Hz)で、最低でも60 dB 減衰するローパスフィルタを設計しましょう。
Wp=
40/500; Ws=
150/500; [n,Wn]=
buttord(Wp,Ws,3,60) n = 5 Wn = 0.0810 [b,a]=
butter(n,Wn); freqz(b,a,512,1000); title('n=5 Butterworth Lowpass Filter')
つぎに、60 Hz から 200 Hz でリップルの最大変量を3 dB 以内の通過帯域とし、両側 50 Hz の遷移部をもち、遮断帯域では、40 dB 以上の減衰をもつバンドパスフィルタを設計しましょう。
Wp=
[60 200]/500; Ws=
[50 250]/500; Rp=
3; Rs=
40; [n,Wn]=
buttord(Wp,Ws,Rp,Rs) n = 16 Wn = 0.1198 0.4005 [b,a]=
butter(n,Wn); freqz(b,a,128,1000) title('n=16 Butterworth Bandpass Filter')
アルゴリズム
buttord
の次数予測公式は、参考文献[1]に記述されています。これは、アナログとディジタルのいずれの場合もアナログ領域で処理を行います。ディジタルの場合には、周波数パラメータをs領域に変換して、次数と固有周波数を推定し、その後でz領域に逆変換します。
buttord
は、まず、希望するフィルタの通過帯域周波数を1ラジアン/秒(ローパスフィルタおよびハイパスフィルタの場合)、または、-1および1ラジアン/秒(バンドパスフィルタおよびバンドストップフィルタの場合)に変換することにより、ローパスフィルタのプロトタイプを作成します。そして、遮断帯域仕様を満たすローパスフィルタに必要な最小次数を計算します。
参考
|
Butterworthアナログおよびディジタルフィルタの設計 |
|
Chebyshev I型フィルタの次数選択 |
|
Chebyshev II型フィルタの次数選択 |
|
楕円フィルタの次数選択 |
|
KaiserウインドウをもつFIRフィルタ設計に対してのパラメータを推定 |
参考文献
[1] Rabiner, L.R., and B. Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975. Pg. 227.
![]() | butter | cceps | ![]() |