Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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 ブロックのリファレンス ページを参照してください。Digital Filter Design ブロックと Filter Realization Wizard の選択については、フィルター設計ブロックの選択を参照してください。

フィルター設計ブロックの選択

この節では、Digital Filter Design ブロックと Filter Realization Wizard ブロックの類似点と相違点について説明します。

類似点

Digital Filter Design ブロックと Filter Realization Wizard は、以下の点が似ています。

  • フィルターの設計と解析のオプション — どちらのブロックも、フィルター デザイナー アプリを使用してフィルターの設計と解析を行います。

  • 出力値 — ブロックの出力が、倍精度浮動小数点、単精度浮動小数点、固定小数点である場合、同じ入力を渡したときの出力は、どちらのブロックも等価な System object の出力値と同じになります。

相違点

Digital Filter Design ブロックと Filter Realization Wizard は、以下の点が異なります。

  • サポートされているフィルター構造 — どちらのブロックも、両者に共通する数多くの基本的なフィルター構造をサポートしていますが、Filter Realization Wizard のほうが、Digital Filter Design ブロックよりも多くの構造をサポートしています。これは、このブロックが Sum、Gain、および Delay のブロックを使用してフィルターを実装できるためです。これらがサポートする構造の一覧については、Filter Realization Wizard および Digital Filter Design ブロックのリファレンス ページを参照してください。

  • データ型のサポート — Filter Realization Wizard ブロックは、すべてのフィルター構造で単精度浮動小数点および倍精度浮動小数点による計算をサポートしており、一部のフィルター構造で固定小数点による計算をサポートしています。Digital Filter Design ブロックは、単精度浮動小数点および倍精度浮動小数点による計算のみサポートしています。

  • ブロックとウィザードの違い — Digital Filter Design ブロックは、それ自体がフィルターですが、Filter Realization Wizard ブロックは、あくまで、新たにフィルターを作成して既存のモデルに組み込むための手段を提供するものです。つまり、Filter Realization Wizard はモデル内でデータを処理するブロックではなく、モデル内でデータを処理するフィルター ブロック (またはサブシステム) を生成するためのウィザードです。

各ブロックを使用する状況

以下に、Digital Filter Design ブロックまたは Filter Realization Wizard のいずれかに特有の状況を示します。

  • Digital Filter Design

    • 単精度浮動小数点および倍精度浮動小数点のフィルターをシミュレートする目的での使用

    • 組み込みシステム用に浮動小数点フィルターを実装する高度に最適化された ANSI® C コードを生成する目的での使用

  • Filter Realization Wizard

    • DSP チップ、フィールド プログラマブル ゲート アレイ (FPGA)、特定用途向け集積回路 (ASIC) における固定小数点フィルターの数値的な動作をシミュレートする目的での使用

    • Digital Filter Design ブロックでサポートされていない構造をもつ単精度浮動小数点および倍精度浮動小数点のフィルターをシミュレートする目的での使用

    • フィルター構造を可視化する目的での使用 (ブロックは、Sum、Gain、Delay ブロックを使用してフィルターを作成できる)

    • 複数のフィルター ブロックを素早く生成する目的での使用

詳細については、Filter Realization Wizard および Filter Realization Wizard ブロックのリファレンス ページを参照してください。

Simulink でのローパス フィルターの作成

Digital Filter Design ブロックを使用して、デジタル FIR または IIR フィルターの作成と実装を行うことができます。このトピックでは、これを使用して FIR ローパス フィルターを作成します。

  1. Simulink を開き、新しいモデル ファイルを作成します。

  2. DSP System Toolbox™ の Filtering ライブラリから Digital Filter Design ブロックをモデルにクリック アンド ドラッグし、次に、Filter Implementations ライブラリから Digital Filter Design ブロックをモデルにクリック アンド ドラッグします。

  3. Digital Filter Design ブロックをダブルクリックします。

    フィルター デザイナー アプリが開きます。

  4. パラメーターを以下のように設定し、[OK] をクリックします。

    • 応答タイプ = ローパス

    • 設計法 = FIR等リップル

    • フィルター次数 = 最小次数

    • 単位 = 正規化 (0-1)

    • wpass = 0.2

    • wstop = 0.5

  5. アプリの下部にある [フィルター設計] をクリックし、フィルターを設計します。

    これで、Digital Filter Design ブロックが、指定したパラメーターをもつフィルターを表すようになります。

  6. [編集] メニューから、[構造の変換] を選択します。

    [構造の変換] ダイアログ ボックスが開きます。

  7. [直接型 FIR 転置] を選択し、[OK] をクリックします。

  8. ブロックの名前を Digital Filter Design - Lowpass に変更します。

これで、Digital Filter Design ブロックが、直接型 FIR 転置構造をもつローパス フィルターを表すようになります。このフィルターは、[wpass][wstop] のパラメーターの定義に従って、ナイキスト周波数 (サンプリング周波数の半分) の 20% 以下のすべての周波数を通過させ、ナイキスト周波数の 50% 以上の周波数を阻止します。次のトピックSimulink でのハイパス フィルターの作成では、Digital Filter Design ブロックを使用してハイパス フィルターを作成します。設計済みのフィルターの実装に関する詳細については、Digital Filter Implementationsを参照してください。

Simulink でのハイパス フィルターの作成

このトピックでは、Digital Filter Design ブロックを使用してハイパス フィルターを作成します。

  1. Simulink でのローパス フィルターの作成で作成したモデルがデスクトップ上に開いていない場合、モデルを開くには

    ex_filter_ex4  

    入力は MATLAB コマンド プロンプトで行います。

  2. DSP System Toolbox の Filtering ライブラリから 2 番目の Digital Filter Design ブロックをモデルにクリック アンド ドラッグし、次に、Filter Implementations ライブラリから 2 番目の Digital Filter Design ブロックをモデルにクリック アンド ドラッグします。

  3. Digital Filter Design ブロックをダブルクリックします。

    フィルター デザイナー アプリが開きます。

  4. パラメーターを以下のように設定します。

    • 応答タイプ = ハイパス

    • 設計法 = FIR等リップル

    • フィルター次数 = 最小次数

    • 単位 = 正規化 (0-1)

    • wstop = 0.2

    • wpass = 0.5

  5. アプリの下部にある [フィルター設計] ボタンをクリックし、フィルターを設計します。

    これで、Digital Filter Design ブロックが、指定したパラメーターをもつフィルターを表すようになります。

  6. [編集] メニューで、[構造の変換] を選択します。

    [構造の変換] ダイアログ ボックスが開きます。

  7. [直接型 FIR 転置] を選択し、[OK] をクリックします。

  8. ブロックの名前を Digital Filter Design - Highpass に変更します。

このブロックによって、直接型 FIR 転置構造をもつハイパス フィルターが実装されます。このフィルターは、[wpass][wstop] のパラメーターの定義に従って、ナイキスト周波数 (サンプリング周波数の半分) の 50% 以上のすべての周波数を通過させ、ナイキスト周波数の 20% 以下の周波数を阻止します。このハイパス フィルターは、Simulink でのローパス フィルターの作成で説明したローパス フィルターとは逆になっています。ハイパス フィルターでは、ローパス フィルターで阻止される周波数が通過し、ローパス フィルターで通過する周波数が阻止されます。次のトピックSimulink における高周波ノイズのフィルター処理では、これらの Digital Filter Design ブロックを使用して、信号から高周波ノイズを除去する機能をもつモデルを作成します。設計済みのフィルターの実装に関する詳細については、Digital Filter Implementationsを参照してください。

Simulink における高周波ノイズのフィルター処理

前のトピックでは、Digital Filter Design ブロックを使用して FIR ローパス/ハイパス フィルターを作成しました。このトピックでは、これらのブロックを使用して、信号から高周波ノイズを除去するモデルを作成します。このモデルでは、一様な乱数信号で励起されるハイパス フィルターを使用して高周波ノイズを生成します。このノイズを正弦波に追加した後、ローパス フィルターを使用して高周波ノイズを除去します。

  1. Simulink でのハイパス フィルターの作成で作成したモデルがデスクトップ上に開いていない場合、モデルを開くには

    ex_filter_ex5 

    入力は MATLAB コマンド プロンプトで行います。

  2. 以下のブロックをモデルにクリック アンド ドラッグします。

    ブロックライブラリ
    Add (Simulink)

    Simulink Math Operations ライブラリ

    1

    Random Source

    ソース

    1

    Sine Wave

    ソース

    1

    Time Scope

    Sinks

    1

  3. 次の表に示すように、これらのブロックのパラメーターを設定します。表に記載されていないパラメーターは、既定の設定のままにします。

    その他のブロックのパラメーター設定

    ブロックパラメーター設定
    Add
    • [アイコン形状] = [四角形]

    • [符号リスト] = ++

    Random Source
    • [Source type] = [Uniform]

    • [Minimum] = 0

    • [Maximum] = 4

    • [Sample mode] = [Discrete]

    • [Sample time] = 1/1000

    • [Samples per frame] = 50

    Sine Wave
    • [Frequency (Hz)] = 75

    • [Sample time] = 1/1000

    • [Samples per frame] = 50

    Time Scope
    • [ファイル][入力端子の数][3]

    • [表示][コンフィギュレーション プロパティ]

      • [時間] タブを開き、[時間範囲][1 フレーム周期] に設定する

  4. ブロックを次の図のように接続します。場合によっては、このタスクを実行するためにブロックのサイズを変更する必要があります。

  5. [モデル化] タブの [モデル設定] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスが開きます。

  6. [ソルバー] ペインでパラメーターを以下のように設定し、[OK] をクリックします。

    • 開始時間 = 0

    • 終了時間 = 5

    • タイプ = 固定ステップ

    • ソルバー = 離散 (連続状態なし)

  7. [シミュレーション] タブで [実行] を選択します。

    モデルのシミュレーションが開始され、3 つの入力信号がスコープに表示されます。

  8. シミュレーションが完了したら、[Time Scope] メニューから [表示][凡例] を選択します。[Time Scope] ウィンドウに凡例が表示されます。Scope 表示の任意の場所に、これをクリック アンド ドラッグできます。チャネルの名前を変更するには、凡例の内側をダブルクリックし、既定のチャネル名を以下のように置き換えます。

    • Add = Noisy Sine Wave

    • Digital Filter Design – Lowpass = Filtered Noisy Sine Wave

    • Sine Wave = Original Sine Wave

    次の手順で、各チャネルの色、スタイル、およびマーカーを設定します。

  9. [Time Scope] ウィンドウで [表示][スタイル] を選択し、以下のように設定します。

    Signalラインマーカー
    Noisy Sine Wave - なし
    Filtered Noisy Sine Wave - 菱形
    Original Sine Wave なし *
  10. [Time Scope] には以下のように表示されるはずです。

    ローパス フィルターによって、ノイズを含む正弦波の高周波ノイズが除去されているのがわかります。

これで、Digital Filter Design ブロックを使用して信号から高周波ノイズを除去するモデルが作成されました。これらのブロックの詳細については、Digital Filter Design ブロックのリファレンス ページを参照してください。フィルターの設計と実装が可能なその他のブロックについては、Filter Realization Wizardを参照してください。フィルター設計を保存する方法については、フィルター設計セッションを保存する/開くを参照してください。フィルター設計をインポート/エクスポートする方法については、量子化されたフィルターのインポートとエクスポートを参照してください。