Digital Filter Design ブロックの使用
Digital Filter Design ブロックの概要
Digital Filter Design ブロックを使用して、デジタル フィルターの設計と実装を行うことができます。設計するフィルターは、単一チャネル信号またはマルチチャネル信号をフィルター処理できます。Digital Filter Design ブロックは、パーソナル コンピューターや DSP チップといった浮動小数点システムのフィルターについて数値的な動作をシミュレートするのに最適です。Simulink® Coder™ 製品を使用して、フィルター ブロックから C コードを生成できます。
フィルターの設計と解析
フィルターの設計と解析はフィルター デザイナー アプリ内ですべて行うことができます。アプリは、Digital Filter Design ブロックをダブルクリックすると開きます。フィルター デザイナーでは、幅広いフィルター設計パラメーターと解析ツール (極-零点プロットやインパルス応答プロットなど) を利用できます。
フィルターの実装
フィルター デザイナーでのフィルターの設計が完了すると、指定したフィルター構造のフィルターがブロックによって自動的に実現されます。その後、このブロックを使用してモデル内で信号をフィルター処理できます。また、シミュレーション中にフィルター仕様パラメーターを変更してフィルターを微調整することもできます。同じ入力を渡した場合、Digital Filter Design ブロックの出力は、このブロックと同等な System object™ フィルターの出力と数値的に一致します。
フィルターの保存、エクスポート、インポート
Digital Filter Design ブロックでは、設計したフィルターを保存したり、MATLAB® ワークスペースや MAT ファイルなどにフィルターをエクスポートしたり、他で設計したフィルターをインポートしたりできます。
フィルター設計を保存する方法については、フィルター設計セッションを保存する/開くを参照してください。フィルター設計をインポート/エクスポートする方法については、量子化されたフィルターのインポートとエクスポートを参照してください。
メモ
Digital Filter Design ブロックを使用して、フィルターの作成と実装を行うことができます。設計済みのフィルターを実装するには、Discrete FIR Filter ブロックまたは Biquad Filter ブロックを使用します。どちらの手法も同じ方法でフィルター設計が実装されます。また、どちらの手法も、シミュレーション時およびコード生成時の動作は同じです。
詳細については、Digital Filter Design ブロックのリファレンス ページを参照してください。
Simulink でのローパス フィルターの作成
Digital Filter Design ブロックを使用して、デジタル FIR または IIR フィルターの作成と実装を行うことができます。このトピックでは、これを使用して FIR ローパス フィルターを作成します。
Simulink を開き、新しいモデル ファイルを作成します。
DSP System Toolbox™ の Filtering ライブラリにある Filter Designs ライブラリから、Digital Filter Design ブロックをモデルにクリックアンドドラッグします。
Digital Filter Design ブロックをダブルクリックします。
フィルター デザイナー アプリが開きます。
パラメーターを以下のように設定し、[OK] をクリックします。
応答タイプ =
ローパス
設計法 =
FIR
、等リップル
フィルター次数 =
最小次数
単位 =
正規化 (0-1)
wpass =
0.2
wstop =
0.5
アプリの下部にある [フィルター設計] をクリックし、フィルターを設計します。
これで、Digital Filter Design ブロックが、指定したパラメーターをもつフィルターを表すようになります。
[編集] メニューから、[構造の変換] を選択します。
[構造の変換] ダイアログ ボックスが開きます。
[直接型 FIR 転置] を選択し、[OK] をクリックします。
ブロックの名前を
Digital Filter Design - Lowpass
に変更します。
これで、Digital Filter Design ブロックが、直接型 FIR 転置構造をもつローパス フィルターを表すようになります。このフィルターは、[wpass] と [wstop] のパラメーターの定義に従って、ナイキスト周波数 (サンプリング周波数の半分) の 20% 以下のすべての周波数を通過させ、ナイキスト周波数の 50% 以上の周波数を阻止します。次のトピックSimulink でのハイパス フィルターの作成では、Digital Filter Design ブロックを使用してハイパス フィルターを作成します。設計済みのフィルターの実装に関する詳細については、Digital Filter Implementationsを参照してください。
Simulink でのハイパス フィルターの作成
このトピックでは、Digital Filter Design ブロックを使用してハイパス フィルターを作成します。
Simulink でのローパス フィルターの作成で作成したモデルがデスクトップ上に開いていない場合は、同等のモデル ex_filter_ex4
を開きます。
DSP System Toolbox の Filtering ライブラリにある Filter Designs から、2 つ目の Digital Filter Design ブロックをモデルにクリックアンドドラッグします。
Digital Filter Design ブロックをダブルクリックします。フィルター デザイナー アプリが開きます。
パラメーターを以下のように設定します。
応答タイプ =
Highpass
設計法 =
FIR
、Equiripple
フィルター次数 =
Minimum order
単位 =
Normalized (0 to 1)
wstop = 0.2
wpass = 0.5
アプリの下部にある [フィルター設計] ボタンをクリックし、フィルターを設計します。これで、Digital Filter Design ブロックが、指定したパラメーターをもつフィルターを表すようになります。
[編集] メニューで、[構造の変換] を選択します。[構造の変換] ダイアログ ボックスが開きます。
[直接型 FIR 転置] を選択し、[OK] をクリックします。ブロックの名前を Digital Filter Design - Highpass
に変更します。
このブロックによって、直接型 FIR 転置構造をもつハイパス フィルターが実装されます。このフィルターは、[wpass] と [wstop] のパラメーターの定義に従って、ナイキスト周波数 (サンプリング周波数の半分) の 50% 以上のすべての周波数を通過させ、ナイキスト周波数の 20% 以下の周波数を阻止します。このハイパス フィルターは、Simulink でのローパス フィルターの作成で説明したローパス フィルターとは逆になっています。ハイパス フィルターでは、ローパス フィルターで阻止される周波数が通過し、ローパス フィルターで通過する周波数が阻止されます。次のトピックSimulink における高周波ノイズのフィルター処理では、これらのDigital Filter Designブロックを使用して、信号から高周波ノイズを除去する機能をもつモデルを作成します。設計済みのフィルターの実装に関する詳細については、Digital Filter Implementationsを参照してください。
Simulink における高周波ノイズのフィルター処理
前のトピックでは、Digital Filter Design ブロックを使用して FIR ローパス/ハイパス フィルターを作成しました。このトピックでは、これらのブロックを使用して、信号から高周波ノイズを除去するモデルを作成します。このモデルでは、一様な乱数信号で励起されるハイパス フィルターを使用して高周波ノイズを生成します。このノイズを正弦波に追加した後、ローパス フィルターを使用して高周波ノイズを除去します。
Simulink でのハイパス フィルターの作成で作成したモデルがデスクトップ上に開いていない場合は、同等のモデル ex_filter_ex5
を開きます。
以下のブロックをモデルにクリックアンドドラッグします。
Simulink Math Operations ライブラリのSum (Simulink)ブロック
Sources ライブラリのRandom Sourceブロック
Sources ライブラリのSine Waveブロック
Sinks ライブラリのTime Scopeブロック
次の表に示すように、これらのブロックのパラメーターを設定します。表に記載されていないパラメーターは、既定の設定のままにします。
Add ブロック:
アイコン形状 =
rectangular
符号リスト =
++
Random Source ブロック:
ソース タイプ =
Uniform
最小値 = 0
最大値 = 4
サンプル時間 = 1/1000
フレームあたりのサンプル数 = 50
Sine Wave ブロック:
周波数 (Hz) = 75
サンプル時間 = 1/1000
フレームあたりのサンプル数 = 50
Time Scope ブロック:
[スコープ]、[設定] をクリック
[時間] で [時間範囲] を
One frame period
に設定
ブロックを次の図のように接続します。場合によっては、このタスクを実行するためにブロックのサイズを変更する必要があります。
[モデル化] タブの [モデル設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスが開きます。
[ソルバー] ペインでパラメーターを以下のように設定し、[OK] をクリックします。
開始時間 = 0
終了時間 = 5
タイプ =
Fixed-step
ソルバー =
Discrete (no continuous states)
[シミュレーション] タブで [実行] を選択します。モデルのシミュレーションが開始され、3 つの入力信号がスコープに表示されます。
凡例を表示するには、Time Scope ツールストリップの [スコープ] タブで [設定] ドロップダウンの矢印をクリックし、[凡例] を選択します。時間スコープ ウィンドウに凡例が表示されます。Scope 表示の任意の場所に、これをクリックアンドドラッグできます。チャネルの名前を変更するには、凡例の内側をダブルクリックし、現在の番号付きチャネル名を以下のように置き換えます。
Add =
Noisy Sine Wave
Digital Filter Design - Lowpass =
Filtered Noisy Sine Wave
Sine Wave =
Original Sine Wave
次の手順で、各チャネルの色、スタイル、およびマーカーを設定します。
Time Scope ウィンドウの [スコープ] タブで [設定] をクリックし、[ライン スタイル] で次のように設定します。
[ライン] を Noisy Sine Wave
に設定
スタイル: -
マーカー: なし
色: 黄
[ライン] を Filtered Noisy Sine Wave
に設定
ライン: -
マーカー: 菱形
色: 赤
[ライン] を Original Sine Wave
に設定
ライン: なし
マーカー: x
色: 青
時間スコープには以下のように表示されるはずです。ローパス フィルターによって、ノイズを含む正弦波の高周波ノイズが除去されているのがわかります。
これらが設定された同等のモデルを表示するには、ex_filter_ex5_equivalent.slx
を開きます。
これで、Digital Filter Design ブロックを使用して信号から高周波ノイズを除去するモデルが作成されました。これらのブロックの詳細については、Digital Filter Designブロックのリファレンス ページを参照してください。フィルター設計を保存する方法については、フィルター設計セッションを保存する/開くを参照してください。フィルター設計をインポート/エクスポートする方法については、量子化されたフィルターのインポートとエクスポートを参照してください。