Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

フィルター デザイナーの紹介

この例では、コマンド ライン フィルター設計関数の便利な代替手段としてのフィルター デザイナーの使用方法を示します。

フィルター デザイナーは、フィルターの設計と解析のための Signal Processing Toolbox™ の強力なグラフィカル ユーザー インターフェイス (GUI) です。

フィルター デザイナーでは、フィルターの性能仕様を設定したり、MATLAB® ワークスペースからフィルターをインポートしたり、極や零点の追加や移動、削除を行うことで、デジタル FIR または IIR フィルターを迅速に設計することができます。また、フィルター デザイナーには、振幅応答プロット、位相応答プロット、極-零点プロットなどのフィルター解析ツールも用意されています。

使い方

MATLAB コマンド プロンプトで filterDesigner と入力します。

>> filterDesigner

[本日のワンポイント] ダイアログがフィルター デザイナーの使用に関する提案と共に表示されます。次に、GUI が既定フィルターと共に表示されます。

GUI には次の 3 つの主要領域があります。

  • [現在のフィルター情報] 領域

  • [フィルター表示] 領域

  • 設計パネル

GUI の上半分には、現在のフィルターのフィルター仕様および応答に関する情報が表示されます。左上の [現在のフィルター情報] 領域には、フィルターのプロパティ、つまり、フィルター構造、次数、使用されるセクション数、フィルターが安定かどうかが表示されます。また、複数のフィルターを処理するためのフィルター マネージャーへのアクセスも提供します。

右上の [フィルター表示] 領域には、振幅応答、群遅延、フィルター係数など、さまざまなフィルター応答が表示されます。

GUI の下半分は、フィルター デザイナーの対話部分です。下半分の設計パネルは、フィルター仕様を定義する場所です。このパネルは、他の 2 つの上部領域に何を表示するかを制御します。サイド バーのボタンを使用して、他のパネルを下半分に表示できます。

このツールには状況依存ヘルプが含まれています。右クリックするか、[これはなに?] ボタンをクリックすることで、このツールのさまざまな部分の情報を得ることができます。

フィルターの設計

ナイキスト周波数 (サンプリング周波数の半分) の 20% 以下のすべての周波数を通過させ、ナイキスト周波数の 50% 以上の周波数を減衰させるロー パス フィルターを設計します。次の仕様で FIR 等リップル フィルターを使用します。

  • 通過帯域の減衰量 1 dB

  • 阻止帯域の減衰量 80 dB

  • 通過帯域周波数 0.2 [正規化 (0-1)]

  • 阻止帯域周波数 0.5 [正規化 (0-1)]

この設計を実装するために、次の仕様を使用します。

1.[応答タイプ] の下のドロップダウン メニューから [ローパス] を選択し、[FIR 設計法] の下で [等リップル] を選択します。一般に、応答タイプや設計法を変更すると、フィルター パラメーターと [フィルター表示] 領域が自動的に更新されます。

2.[フィルター次数] 領域で [次数指定] を選択し、30 と入力します。

3.FIR 等リップル フィルターには、周波数グリッドの密度をコントロールする [密度係数] オプションがあります。値を増やすと、理想的な等リップル フィルターにより密接に近似するフィルターが作成されますが、計算が増えるため、より多くの時間が必要になります。この値を 20 のままにします。

4.[周波数仕様] 領域の [単位] プルダウン メニューで [正規化 (0-1)] を選択します。

5.[周波数仕様] 領域で [wpass] に対して 0.2 と入力し、[wstop] に対して 0.5 と入力します。

6.[振幅仕様] 領域の [Wpass] および [Wstop] は、FIR 等リップル フィルターでの最適化中に使用される、帯域ごとに 1 つの正の重みです。これらの値を 1 のままにします。

7.設計仕様を設定したら、GUI の下部にある [フィルター設計] ボタンをクリックしてフィルターを設計します。

フィルターの振幅応答は、係数が計算された後に、[フィルター解析] 領域に表示されます。

他の解析の表示

一度、フィルターを設計すると、ツール バーのボタンのいずれかをクリックすることで、ディスプレイ ウィンドウに次のフィルター解析を表示できます。

左から右の順に、ボタンは次のとおりです。

  • 振幅応答

  • 位相応答

  • 振幅応答と位相応答

  • 群遅延応答

  • 位相遅延応答

  • インパルス応答

  • ステップ応答

  • 極-零点プロット

  • フィルター係数

  • フィルター情報

軸の単位の変更

x 軸または y 軸の単位を変更するには、軸ラベル上でマウスを右クリックし、希望する単位を選択します。現在の単位にはチェック マークが付いています。

データ点のマーク

表示領域で、プロット内の任意の点をクリックして、その点の値を表示するデータ マーカーを追加できます。データ マーカーを右クリックすると、データ マーカーの移動や削除、外観の調整を行うことができるメニューが表示されます。

設計の最適化

フィルターの実装コストを最小限に抑えるために、設計パネルの [最小次数] オプションを使用して係数の数を減らしてみます。

設計領域で [フィルター次数] の選択を [最小次数] に変更し、他のパラメーターはそのままにします。

[フィルター設計] ボタンをクリックして新規フィルターを設計します。

[現在のフィルター情報] 領域でわかるように、フィルター次数が 30 から 16 に減少し、リップル数が減少し、遷移幅が広くなりました。通過帯域と阻止帯域の仕様は設計基準を満たしたままです。

解析パラメーターの変更

プロット上で右クリックし、[解析パラメーター] を選択することによって、解析固有のパラメーターを変更するためのダイアログ ボックスを使用できます。([解析] メニューから [解析パラメーター] を選択することもできます。)

表示パラメーターを既定値として保存するには、[既定として保存] をクリックします。MATLAB 定義の既定値に戻すには、[既定の設定に戻す] をクリックします。

フィルターのエクスポート

設計に満足したら、フィルターを次のエクスポート先にエクスポートできます。

  • MATLAB ワークスペース

  • MAT ファイル

  • テキストファイル

[ファイル] メニューから [エクスポート] を選択します。

MATLAB ワークスペースまたはMAT ファイルにエクスポートする場合、フィルターを係数としてエクスポートできます。DSP System Toolbox™ を使用できる場合、フィルターを System object としてエクスポートすることもできます。

MATLAB ファイルの生成

フィルター デザイナーを使用すると、フィルターを再作成するための MATLAB コードを生成できます。これにより、既存のコードに設計を組み込んだり、スクリプトでフィルターの作成を自動化したりできます。

[ファイル] メニューから [MATLAB コードを生成][フィルター設計関数] の順に選択し、[MATLAB コードを生成] ダイアログ ボックスでファイル名を指定します。

上で設計した最小次数フィルターから次のコードが生成されました。

フィルターの量子化

DSP System Toolbox™ がインストールされている場合、サイド バーで [量子化パラメーターの設定] パネルを利用できます。

このパネルを使用して倍精度のフィルターを量子化および解析できます。DSP System Toolbox を使用すると、倍精度から単精度に量子化できます。Fixed-Point Designer がある場合は、フィルターを固定小数点精度に量子化できます。フィルター内に浮動小数点演算と固定小数点演算を混在させることはできません。

ターゲット

フィルター デザイナーの [ターゲット] メニューを使用すると、フィルターを表すさまざまなタイプのコードを生成できます。たとえば、C ヘッダー ファイルや、XILINX Coefficient (COE) ファイル (DSP System Toolbox を使用)、VHDL および Verilog をテスト ベンチと共に (Filter Design HDL Coder™ を使用) 生成できます。

追加機能

また、フィルター デザイナーは、次に示す他の MathWorks™ 製品から追加機能を統合します。

  • DSP System Toolbox- 高度な FIR および IIR 設計法 (つまり、フィルター変換、マルチレート フィルター) を追加し、フィルター対象の同等のブロックを生成します。

  • Embedded Coder™- Texas Instruments C6000 プロセッサに対してコードを生成、ビルド、および展開します。

  • Filter Design HDL Coder- 固定小数点フィルターに対して合成可能な VHDL または Verilog コードを生成します。

  • Simulink®- Atomic の Simulink ブロックからフィルターを生成します。

参考