最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Simulink でのローパス IIR フィルター設計

この例では、Simulink® での標準的ローパス IIR フィルターの設計法を示します。

この例では、まず filterBuilder を使用してフィルター設計を用意します。この設計における重要なパラメーターはカットオフ周波数です。これは、フィルターのパワーがノミナル通過帯域値の半分 (-3 dB) に減衰する周波数です。この例では、バタワース設計を同じ次数のチェビシェフ フィルターまたは楕円フィルターに置き換えて、フィルターの通過帯域や阻止帯域のいくつかのリップルを代償に急峻なロールオフを得ることができることを示します。さらに、最小次数設計についても検討します。

次に、Lowpass Filter ブロックから利用できるインターフェイスを使用して Simulink でローパス フィルターを設計および使用する方法を示します。

最後に、実行時にフィルターのカットオフ周波数を変更できる Variable Bandwidth IIR Filter を示します。

filterBuilder

filterBuilder は、フィルターの作成に使用するユーザー インターフェイスを起動します。filterBuilder では、仕様に基づいたアプローチを使用して、希望する応答に最適なアルゴリズムを見つけます。指定した設計から Simulink ブロックを作成することもできます。

filterBuilder を使用して IIR ローパス フィルター ブロックの設計を開始するには、コマンド filterBuilder('lp') を実行します。[ローパス設計] ダイアログ ボックスが開きます。

バタワース フィルター

カットオフ周波数が 5 kHz の 8 次バタワース ローパス フィルターを設計します。サンプルレートは 44.1 KHz とします。

[インパルス応答][IIR][次数モード][指定][次数][8] に設定します。カットオフ周波数を指定するには、[周波数制約][電力半値 (3 dB) 周波数] に設定します。周波数を Hz 単位で指定するには、[周波数単位][Hz][入力サンプル レート][44100][電力半値 (3 dB) 周波数][5000] に設定します。[設計法][バタワース] に設定します。

[適用] をクリックします。フィルターの周波数応答を可視化するには、[フィルター応答の表示] をクリックします。フィルターは最大フラットとなります。通過帯域または阻止帯域にリップルはありません。フィルター応答は仕様マスク (赤の点線) の範囲内にあります。

この設計からブロックを生成してモデルで使用します。モデル ex_iir_design を開きます。フィルター ビルダーで、[コード生成] タブの [モデルの生成] をクリックします。[Simulink にエクスポート] ウィンドウで、[ブロック名][Butter][保存先][現在] と指定します。遅延やゲインなどの基本要素を使用してブロックを作成するか DSP System Toolbox™ のいずれかのフィルター ブロックを使用するかを選択することもできます。この例ではフィルター ブロックを使用します。

[モデルの実現] をクリックして Simulink ブロックを生成します。このブロックの入力端子と出力端子を ex_iir_design モデルのソースまたはシンクのブロックに接続できます。

このモデルでは、44.1 kHz でサンプリングされるノイズを含む正弦波がフィルターを通過します。この正弦波は、ゼロ平均で分散 10–5 のガウス ノイズの影響を受けています。モデルを実行します。スペクトル アナライザーのビューに元の信号とフィルター処理された信号が表示されます。

チェビシェフ I 型フィルター

次に、チェビシェフ I 型フィルターを設計します。チェビシェフ I 型設計では、通過帯域を制御できます。阻止帯域にはリップルはありません。リップルを大きくすると、急峻なロールオフが得られます。このモデルでは、ピーク ツー ピーク リップルは 0.5 dB と指定されています。

フィルター ビルダー[メイン] タブで次のように設定します。

  1. [振幅の制約][通過帯域リップル]

  2. [通過帯域リップル][0.5]

  3. [設計法][チェビシェフ I 型]

[適用] をクリックし、[フィルター応答の表示] をクリックします。

通過帯域にズーム インすると、リップルが [-0.5, 0] dB の範囲に制約されていることがわかります。

バタワース フィルターと同様に、[コード生成] タブで [モデルの生成] をクリックしてから [モデルの実現] をクリックすると、この設計からブロックを生成できます。

チェビシェフ II 型フィルター

チェビシェフ II 型設計では、阻止帯域の減衰量を制御できます。通過帯域にはリップルはありません。阻止帯域の減衰を小さくすると、急峻なロールオフが得られます。この例では、阻止帯域の減衰量は 80 dB です。フィルター ビルダー[メイン] タブで次のように設定し、[適用] をクリックします。

[フィルター応答の表示] をクリックします。

この設計からブロックを生成するには、[コード生成] タブで [モデルの生成] をクリックし、[モデルの実現] をクリックします。

楕円フィルター

楕円フィルターは、阻止帯域と通過帯域の両方でリップルを使用できるので、前の設計と比較して急峻なロールオフを提供できます。この動作を示すために、チェビシェフ設計で指定したものと同じ通過帯域と阻止帯域の特性を使用します。フィルター ビルダー[メイン] タブで次のように設定し、[適用] をクリックします。

この設計からブロックを生成するには、[コード生成] タブで [モデルの生成] をクリックし、[モデルの実現] をクリックします。

最小次数設計

通過帯域と阻止帯域を周波数と許容可能なリップルの量の観点から指定するには、最小次数設計を使用します。例として、バタワース フィルターの [次数モード][最小値] に設定されていることを確認し、[設計法][バタワース] に設定します。通過帯域と阻止帯域の周波数を 0.1*22050 Hz および 0.3*22050 Hz に設定し、通過帯域リップルと阻止帯域の減衰量を 1 dB および 60 dB にそれぞれ設定します。この仕様をバタワース設計で満たすには、7 次のフィルターが必要です。他の設計法で同じアプローチに従うと、チェビシェフ I 型およびチェビシェフ II 型の設計では 5 次のフィルターが必要であることを確認できます。楕円設計では 4 次のフィルターで十分です。

次の図は、7 次バタワース フィルターの振幅応答を示しています。

この 7 次バタワース設計の極-零点プロットでは、7 つの極の想定クラスタリングが単位円上の 0 ラジアンの角度の周りに表示され、対応する 7 つの零点が π ラジアンの角度にあります。

Lowpass Filter ブロック

フィルター ビルダーの代わりに、Simulink モデルで Lowpass Filter ブロックを使用することもできます。Lowpass Filter ブロックでは、設計と実装の段階が 1 つのステップにまとめられます。フィルターの係数の設計には楕円法が使用され、最小次数とカスタム次数の設計が可能です。

ex_lowpass モデルでは、44.1 kHz でサンプリングされるノイズを含む正弦波信号のフィルター処理に Lowpass Filter ブロックが使用されています。スペクトル アナライザーに元の信号とフィルター処理された信号が表示されます。

model = 'ex_lowpass';
open_system(model);
set_param(model,'StopTime','1024/44100 * 1000')
sim(model);

Lowpass Filter ブロックを使用すると、バタワース フィルターおよびチェビシェフ フィルターに任意の近傍で近似するフィルターを設計できます。チェビシェフ I 型フィルターを近似するには、阻止帯域の減衰量を任意に大きくします (180 dB など)。チェビシェフ II 型フィルターを近似するには、通過帯域リップルを任意に小さくします (1e-4 など)。バタワース フィルターを近似するには、阻止帯域の減衰量を任意に大きくし、通過帯域リップルを任意に小さくします。

Variable Bandwidth IIR Filter ブロック

実行時にカットオフ周波数を変更可能なフィルターを設計することもできます。その場合は Variable Bandwidth IIR Filter ブロックを使用します。このブロックを使用したモデルについては、Tunable Lowpass Filtering of Noisy Input in Simulinkの例を参照してください。

関連するトピック