Signal Processing Toolbox    
butter

Butterworthアナログおよびディジタルフィルタの設計

表示

詳細

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'には、つぎの文字列を設定できます。

設定する出力引数の数により、butterは種々の形式のフィルタを実現します。零点-極-ゲイン型を得るには、つぎのように3つの出力引数を使用します。

[z,p,k] = butter(n,Wn) または、[z,p,k] = butter(n,Wn,'ftype') は、零点と極を長さnの列ベクトルzpに、またゲインをスカラkにそれぞれ出力します。

状態空間型を得るには、つぎのように4つの出力引数を使用します。

[A,B,C,D] = butter(n,Wn) または、[A,B,C,D] = butter(n,Wn,'ftype')、ここで、ABC、およびDは、

であり、uは入力、xは状態ベクトル、yは出力です。

アナログ領域

[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の列ベクトルzpに、またゲインをスカラkにそれぞれ出力します。

状態空間型を得るには、つぎのように4つの出力引数を使用します。

[A,B,C,D] = butter(n,Wn,'s') 、または、[A,B,C,D] = butter(n,Wn,'ftype','s')、ここで、ABC、およびDは、

であり、uは入力、xは状態ベクトル、yは出力です。

例題

1000 Hzでサンプリングしたデータに対して、300 Hzのカットオフ周波数をもつ9次のハイパスButterworthフィルタを設計します。

フィルタの周波数応答は、つぎのようになります。

つぎに、100〜200 Hzの通過帯域をもつ10次のバンドパスButterworthフィルタを設計し、そのインパルス応答、すなわち、単位サンプル応答をプロットします。

制限

高次フィルタでは、状態空間型が数値的に最も正確であり、ついで、零点-極-ゲイン型が正確です。伝達関数係数型は、最も精度が劣り、15次程度のフィルタ次数でも数値的な問題が生じる可能性があります。

アルゴリズム

butterは、つぎの5つのステップのアルゴリズムを実行します。

  1. 関数buttapを使って、ローパスアナログプロトタイプの極、零点、およびゲインを求めます。
  2. 極、零点、およびゲインを状態空間型に変換します。
  3. 状態空間変換を使って、ローパスフィルタを、希望するカットオフ周波数をもつバンドパス、ハイパス、またはバンドストップフィルタに変換します。
  4. ディジタルフィルタ設計の場合には、butterは、bilinearを使って、プリワーピング周波数をもつ双1次変換によりアナログフィルタをディジタルフィルタに変換します。周波数を注意深く調整することにより、アナログフィルタとディジタルフィルタが、Wnあるいはw1w2で、同一の周波数応答をもつことが保証されます。
  5. 必要に応じて、状態空間フィルタを伝達関数または、零点-極-ゲイン型に逆変換します。

参考
besself
Besselアナログフィルタの設計
buttap
Butterworthアナログローパスフィルタのプロトタイプ
buttord
Butterworthフィルタの次数選択
cheby1
Chebyshev I型フィルタの設計(通過帯域リップル)
cheby2
Chebyshev II型フィルタの設計(遮断帯域リップル)
ellip
楕円フィルタの設計
maxflat
汎用ディジタルButterworthフィルタの設計


 buttap buttord