| Signal Processing Toolbox | ![]() |
Butterworthアナログおよびディジタルフィルタの設計
表示
[b,a]=butter(n,Wn) [b,a]=butter(n,Wn,'ftype') [b,a]=butter(n,Wn,'s') [b,a]=butter(n,Wn,'ftype','s') [z,p,k]=butter(...) [A,B,C,D]=butter(...)
詳細
butterは、ディジタルおよびアナログのローパス、バンドパス、ハイパス、およびバンドストップButterworthフィルタを設計します。Butterworthフィルタは、通過帯域で、ゲイン応答が可能な限り平坦となり、全体的に単調となる特徴があります。
Butterworthフィルタは、通過帯域および遮断帯域で平坦になるために、急峻なロールオフにはなりません。そのため、Butterworthフィルタの平坦さが必要でない限り、楕円またはChebyshevフィルタの方が一般に、低いフィルタ次数で、より急峻なロールオフ特性を実現することができます。
ディジタル領域
[b,a] = butter(n,Wn)
は、カットオフ周波数Wnをもつn次のローパスディジタルButterworthフィルタを設計します。これは、フィルタ係数を長さ(n+1)の行ベクトルbおよびaに、zの次数の降順に出力します。
カットオフ周波数は、フィルタのゲイン応答がsqrt(1/2)となる周波数です。butterでは、カットオフ周波数Wnは、0と1の間の数でなければなりません。ここで、1はNyquist周波数、
ラジアン/サンプルに対応します。
Wnが2要素ベクトルWn = [w1 w2]の場合、butterは通過帯域w1 <
< w2をもつ2*n次のディジタルバンドパスフィルタを出力します。
[b,a] = butter(n,Wn,' は、ハイパスまたはバンドストップフィルタを設計します。ここで、ftype')
'ftype'には、つぎの文字列を設定できます。
'high':カットオフ周波数Wnをもつハイパスディジタルフィルタ'stop':Wnが2要素ベクトルWn = [w1 w2]の場合、2*n次のバンドストップディジタルフィルタで、遮断帯域は、w1 <
< w2となります。設定する出力引数の数により、butterは種々の形式のフィルタを実現します。零点-極-ゲイン型を得るには、つぎのように3つの出力引数を使用します。
[z,p,k] = butter(n,Wn)
または、[z,p,k] = butter(n,Wn,'ftype') は、零点と極を長さnの列ベクトルzとpに、またゲインをスカラkにそれぞれ出力します。
状態空間型を得るには、つぎのように4つの出力引数を使用します。
[A,B,C,D] = butter(n,Wn)
または、[A,B,C,D] = butter(n,Wn,'ftype')、ここで、A、B、C、およびDは、
アナログ領域
[b,a] = butter(n,Wn,'s')
は、カットオフ周波数Wnをもつn次のローパスアナログButterworthフィルタを設計します。これは、フィルタ係数を長さn + 1の行ベクトルbおよびaに、sの次数の降順に出力します。
butterのカットオフ周波数Wnは、0より大きくなければなりません。
Wnが、w1 < w2である2要素ベクトルの場合には、butter(n,Wn,'s')は、通過帯域w1 <
< w2をもつ2*n次のバンドパスアナログフィルタを出力します。
[b,a] = butter(n,Wn,' は、ハイパス、または、バンドストップフィルタを設計します。 ftype','s')
設定する出力引数の数により、butterは種々の形式のアナログフィルタを実現します。零点-極-ゲイン型を得るには、つぎのように3つの出力引数を使用します。
[z,p,k] = butter(n,Wn,'s')
または、 [z,p,k] = butter(n,Wn,'ftype','s') は、零点と極を長さnの列ベクトルzとpに、またゲインをスカラkにそれぞれ出力します。
状態空間型を得るには、つぎのように4つの出力引数を使用します。
[A,B,C,D] = butter(n,Wn,'s')
、または、[A,B,C,D] = butter(n,Wn,'ftype','s')、ここで、A、B、C、およびDは、
例題
1000 Hzでサンプリングしたデータに対して、300 Hzのカットオフ周波数をもつ9次のハイパスButterworthフィルタを設計します。
[b,a] = butter(9,300/500,'high');
freqz(b,a,128,1000)
つぎに、100〜200 Hzの通過帯域をもつ10次のバンドパスButterworthフィルタを設計し、そのインパルス応答、すなわち、単位サンプル応答をプロットします。
n=5; Wn=[100 200]/500; [b,a]=butter(n,Wn); [y,t]=impz(b,a,101); stem(t,y)
制限
高次フィルタでは、状態空間型が数値的に最も正確であり、ついで、零点-極-ゲイン型が正確です。伝達関数係数型は、最も精度が劣り、15次程度のフィルタ次数でも数値的な問題が生じる可能性があります。
アルゴリズム
butterは、つぎの5つのステップのアルゴリズムを実行します。
buttapを使って、ローパスアナログプロトタイプの極、零点、およびゲインを求めます。
butterは、bilinearを使って、プリワーピング周波数をもつ双1次変換によりアナログフィルタをディジタルフィルタに変換します。周波数を注意深く調整することにより、アナログフィルタとディジタルフィルタが、Wnあるいはw1とw2で、同一の周波数応答をもつことが保証されます。
参考
|
Besselアナログフィルタの設計 |
|
Butterworthアナログローパスフィルタのプロトタイプ |
|
Butterworthフィルタの次数選択 |
|
Chebyshev I型フィルタの設計(通過帯域リップル) |
|
Chebyshev II型フィルタの設計(遮断帯域リップル) |
|
楕円フィルタの設計 |
|
汎用ディジタルButterworthフィルタの設計 |
| buttap | buttord | ![]() |