filterBuilder
対話型のフィルター設計
構文
filterBuilder(h)
filterBuilder('response
')
説明
filterBuilder
は、フィルターを作成するための対話型のツールです。このツールは fdesign
オブジェクト-オブジェクト指向フィルター設計パラダイムを基盤とし、フィルター設計プロセス中の開発時間を削減することを目的としています。filterBuilder
は仕様に基づいたアプローチを使用して、希望する応答に最適なアルゴリズムを見つけます。
メモ
fdesign
と filterBuilder
を使用するには、Signal Processing Toolbox™ がインストールされていなければなりません。下記の機能の中には、ご使用のシステムに DSP System Toolbox™ を含まない場合は利用できないものがあります。ツールボックスは、コマンド プロンプトで「ver
」と入力することにより確認できます。
filterBuilder
の使用方法の詳細については、フィルター ビルダー設計プロセスを参照してください。
filterBuilder
を使用するには、次の 3 つのアプローチのいずれかを使用して、MATLAB® コマンド ラインに「filterBuilder
」と入力します。
単に
filterBuilder
と入力します。MATLAB によってダイアログが表示され、フィルターの応答タイプを選択できるようになります。フィルターの応答タイプを選択すると、filterBuilder
によって適切なフィルター設計ダイアログ ボックスが表示されます。「
filterBuilder(h)
」と入力します。ここで、h は既存のフィルター オブジェクトです。たとえば、h
がバンドパス フィルターである場合は、filterBuilder(h)
によってバンドパス フィルター設計ダイアログ ボックスが表示されますh
オブジェクトはfilterBuilder
を使用するかfdesign
を使用して作成したものでなければなりません。メモ
フィルター System object の作成とインポートを行うには、DSP System Toolbox ソフトウェアがインストールされていなければなりません。
「
filterBuilder('
」と入力し、response
')response
を次の表に示す応答メソッドに置き換えます。MATLAB によって、指定した応答に対応したフィルター設計ダイアログが表示されます。
メモ
次の表に示すフィルター設計の多くは、その実装にDSP System Toolbox ソフトウェアを必要とします。Signal Processing Toolbox ソフトウェアのみを使用する場合は、次に示すフィルター応答タイプの一部しか設計できません。
応答メソッド | 結果のフィルター設計の説明 | フィルター オブジェクト |
---|---|---|
arbgrpdelay | 任意の群遅延フィルター設計 | fdesign.arbgrpdelay |
arbmag | 任意の振幅フィルター設計 | fdesign.arbmag |
arbmagnphase | 任意の応答フィルター (振幅と位相) | fdesign.arbmagnphase |
audioweighting | オーディオの重み付けフィルター | fdesign.audioweighting |
bandpass または bp | バンドパス フィルター | fdesign.bandpass |
bandstop または bs | バンドストップ フィルター | fdesign.bandstop |
cic | CIC フィルター | fdesign.decimator(M,'cic',...) または fdesign.interpolator(L,'cic',...) fdesign.decimator および fdesign.interpolator を参照してください。 |
ciccomp | CIC 補償器 | fdesign.ciccomp |
comb | 櫛形フィルター | fdesign.comb |
diff | 微分器フィルター | fdesign.differentiator |
fracdelay | 非整数遅延フィルター | fdesign.fracdelay |
halfband または hb | ハーフバンド フィルター | fdesign.halfband |
highpass または hp | ハイパス フィルター | fdesign.highpass |
hilb | ヒルベルト フィルター | fdesign.hilbert |
isinc、 isinclp または isinchp | 逆 sinc ローパスまたはハイパス フィルター | fdesign.isinclp および fdesign.isinchp |
lowpass または lp | ローパス フィルター (既定の設定) | fdesign.lowpass |
notch | ノッチ フィルター | fdesign.notch |
nyquist | ナイキスト フィルター | fdesign.nyquist |
octave | オクターブ フィルター | fdesign.octave |
parameq | パラメトリック イコライザー フィルター | fdesign.parameq |
peak | ピーク フィルター | fdesign.peak |
メモ
これらはフィルター構造を変更しないため、filterBuilder
の使用時には振幅の仕様と設計法を調整できます。
フィルター ビルダーの設計ペイン
メイン設計ペイン
フィルター ビルダーの [メイン] ペインはフィルター応答タイプによって異なりますが、基本的な構造は同じです。次の図は、ダイアログ ボックスの基本的なレイアウトを示しています。
フィルターの応答を選択すると、ダイアログ ボックスに表示される利用可能なオプションと設計パラメーターが変化します。この表示により、フィルター設計のコンテキストで意味のあるパラメーターのみに注目できるようになります。
フィルター設計の各ダイアログ ボックスには、次の図に示すように、ダイアログ ボックスの上部に表示されるオプションが含まれています。
変数を保存 — [適用] をクリックして変更を適用するか、[OK] をクリックしてこのダイアログ ボックスを閉じると、
filterBuilder
によって現在のフィルターが入力した名前のフィルター オブジェクトとして MATLAB ワークスペースに保存されます。フィルター応答の表示 — 現在のフィルターの仕様と設計法に対する振幅応答を表示します。入力サンプル レートを指定すると、振幅応答は Hz 単位の周波数の関数になります。入力サンプル レートを指定しない場合、振幅応答はラジアン/サンプル単位の正規化周波数の関数になります。
メモ
filterBuilder
ダイアログ ボックスには [適用] オプションが含まれています。[適用] をクリックするたびに、filterBuilder
によって、変更されたフィルターが MATLAB ワークスペースに書き込まれます。この変更されたフィルターは、[変数を保存] で割り当てた変数名をもっています。ワークスペースの変数を上書きせずに変更を適用するには、[適用] をクリックする前に [変数を保存] で変数名を変更します。
[フィルター ビルダー] ダイアログ ボックスには 3 つのタブがあり、次の 3 つのペインが含まれています。[メイン]、[データ型] および [コード生成] です。最初のペインは、設計するフィルターに応じて変化します。残りの 2 つのペインはすべてのフィルターに共通しています。これらのペインについては以下の節で説明します。
[データ型] ペイン
[フィルター ビルダー] ダイアログ ボックスの 2 番目のタブを次の図に示します。
[演算] ドロップダウン ボックスでは、[倍精度]
、[単精度]
、または [固定小数点]
を選択できます。フィルターのパラメーターによっては、これらのオプションがすべて使用できない場合もあります。次の表にこれらのオプションを示します。
演算リスト項目 | フィルターに対する効果 |
---|---|
倍精度 | すべてのフィルター処理と係数は、倍精度浮動小数点の表現と演算を使用します。filterBuilder を使用してフィルターを作成する場合、[倍精度] は [演算] プロパティの既定値になります。 |
単精度 | すべてのフィルター処理と係数は、単精度浮動小数点の表現と演算を使用します。 |
固定小数点 | このエントリは、固定小数点フィルターのプロパティに対し、数多くのデジタル プロセッサで一般的に使用される、選択された既定値に適用されます。これらのプロパティには、係数の語長、小数部の長さ、およびさまざまな動作モードが含まれます。この設定では、符号付き固定小数点データ型のみを使用できます。filterBuilder を使用した固定小数点フィルターの設計は、DSP System Toolbox ソフトウェアと共に Fixed-Point Designer™ ソフトウェアをインストールした場合にのみ使用できます。 |
次の図は、[演算] に [固定小数点]
を選択し、[フィルター内部] を Specify precision
に設定した後の [データ型] ペインを示しています。この図は、[メイン] ペインで [System object を使用してフィルターを実装] チェック ボックスが選択されていない場合の [データ型] ペインです。
[メイン] ペインで [System object を使用してフィルターを実装] チェック ボックスをオンにした場合は、[データ型] ペインが次のように表示されます。
次の節で説明するすべてのパラメーターがすべてのフィルターに適用されるとは限りません。たとえば、FIR フィルターには [セクションの入力] パラメーターと [セクションの出力] パラメーターはありません。
- 入力信号
フィルターがフィルター処理するデータに適用する形式を指定します。すべての場合において、
filterBuilder
では 2 進小数点スケーリングと符号付き入力を使用するフィルターを実装します。語長と小数部の長さは必要に応じて設定します。- 係数
フィルターの分子と分母の係数の語長と小数部の長さを指定する方法を選択します。
[語長の指定]
では、係数の語長をビット数で入力できます。このモードでは、filterBuilder
は係数の小数部の長さを 2 進小数点のみのスケーリングに自動的に設定します。このスケーリングは、係数の値と語長に最高の精度をもたらします。[2 進小数点スケーリング]
では、係数の語長と小数部の長さをビット数で入力できます。必要に応じて、分子と分母の係数に個別の小数部の長さを入力できます。フィルターの係数は、[フィルター内部] リストから
[精度の指定]
を選択したときに使用できる [丸めモード] パラメーターと [オーバーフロー モード] パラメーターには従いません。係数は常に飽和され、[最も近い正の整数方向]
に丸められます。
- セクションの入力
SOS フィルターの各セクションに入力される固定小数点データ型の語長と小数部の長さを指定する方法を選択します。このパラメーターは、選択されているフィルター構造が IIR または SOS の場合にのみ表示されます。
[2 進小数点スケーリング]
では、セクションの入力の語長と小数部の長さをビット数で入力できます。[語長の指定]
では、語長をビット数で入力できます。
- セクションの出力
SOS フィルターの各セクションから返される固定小数点データ型の語長と小数部の長さを指定する方法を選択します。このパラメーターは、選択されているフィルター構造が IIR または SOS の場合にのみ表示されます。
[2 進小数点スケーリング]
では、セクションの出力の語長と小数部の長さをビット数で入力できます。[語長の指定]
では、出力の語長をビット数で入力できます。
- 状態
フィルターの操作前、操作中、および操作後のフィルター状態を含んでいます。状態は、フィルタリングの実行間またはセッション間のフィルターのメモリとして機能します。このパラメーターを使用して、状態の語長と小数部の長さの指定方法を指定します。このパラメーターは、直接型および直接型 I のフィルター構造に対しては表示されません。
filterBuilder
では状態を入力形式から直接推定するためです。状態では常に以下の符号付き表現を使用します。[2 進小数点スケーリング]
では、積和の語長と小数部の長さをビット数で入力できます。[精度の指定]
では、語長と小数部の長さをビット数で入力できます (利用可能な場合)。
- 乗算器
フィルターが乗算操作の出力を処理する方法を決定します。以下のオプションから選択します。
[完全精度]
— 結果の完全精度を維持します。[LSB を保持]
— データの単語を短縮する必要があるときに、結果の最下位ビットを保持します。[精度の指定]
— 乗算の出力によって使用される精度 (小数部の長さ) を設定できます。
- フィルター内部
固定小数点フィルターがフィルター内で算術演算を実行する方法を指定します。影響を受けるフィルター部分は、フィルターの乗算、加算、状態、および出力です。以下のオプションのいずれかをクリックします。
[完全精度]
— フィルターが乗算、出力、および積和のすべての計算において完全精度を維持することを指定します。[精度の指定]
— 乗算演算の結果、フィルター出力、および積和に適用される語長と小数部の長さを設定します。このオプションを選択すると、語長と小数部の長さのコントロールが有効になります。
- 符号付き
このオプションを選択すると、フィルター係数に対して符号付き表現を使用するようにフィルターに指示されます。
- 語長
関連付けられているフィルターのパラメーターの語長をビット数で設定します。
- 小数部の長さ
関連付けられているフィルターのパラメーターの小数部の長さをビット数で設定します。
- アキュムレータ
このパラメーターを使用して、積和の語長と小数部の長さの指定方法を指定します。
積和の出力による値の保存方法を決定します。以下のオプションから選択します。
[完全精度]
— 積和の完全精度を維持します。[MSB を保持]
— 積和の最上位ビットを保持します。[LSB を保持]
— データの単語を短縮する必要があるときに、積和の最下位ビットを保持します。[精度の指定]
— 積和によって使用される精度 (小数部の長さ) を設定できます。
- 出力
フィルターがフィルター処理後に出力データをスケーリングするために使用するモードを設定します。以下の選択肢があります。
[オーバーフローを回避]
— 出力データの小数部の長さを設定し、データのオーバーフローを回避します。[オーバーフローを回避]
は、入力のデータ値と範囲とは独立しているため、保守的な設定と見なされます。[最高精度]
— 出力データの精度が最大化されるように、出力データの小数部の長さを設定します。[精度の指定]
— フィルター処理したデータによって使用される小数部の長さを設定します。
- 固定小数点が使用可能なパラメーター
このグループのパラメーターは、フィルターが固定小数点値を丸める方法と、オーバーフロー データを処理する方法を制御します。
- 丸めモード
数値がデータ形式に対して表現できる値 (語長および小数部の長さ) の間に位置する場合に、フィルターがその値を量子化するために使用するモードを設定します。
ceil
— 正の無限大方向に丸めます。convergent
— 最も近い表現可能な整数に丸めます。同順位が存在する場合は、最も近い偶数の保存整数に丸めます。これは、このソフトウェアで利用可能な最もバイアスのない方法です。zero/fix
— ゼロ方向に丸めます。floor
— 負の無限大方向に丸めます。nearest
— 最も近い整数へ丸めます。同順位が存在する場合は、正の無限大方向に丸めます。round
— 最も近い整数へ丸めます。同順位が存在する場合、負数に対しては負の無限大方向に丸め、正数に対しては正の無限大方向に丸めます。
ここで行う選択は、常に丸められる係数値と入力データを除くすべてに影響します。ほとんどの場合、乗算はオーバーフローせず、完全精度を維持します。
- オーバーフロー モード
フィルターが固定小数点演算におけるオーバーフロー状態に対応するために使用するモードを設定します。以下のオプションから選択します。
Saturate
— 出力を表現可能な最大の正または負の値に制限します。Wrap
— モジュラー演算を使用して、表現可能な最も近い値にオーバーフロー値を設定します。
ここで行う選択は、常に丸められる係数値と入力データを除くすべてに影響します。ほとんどの場合、乗算はオーバーフローせず、完全精度を維持します。
- 加算の前にキャスト
加算演算の実行前に、数値データを適切な積和形式にキャストするかどうかを指定します。[加算の前にキャスト] を選択すると、影響を受ける加算演算の結果が、ほとんどのデジタル信号プロセッサで見られる結果に最も近くなります。加算前にキャスト演算を実行すると、エラー ソースをフィルター結果に追加できる 1 つまたは 2 つの量子化操作が追加されます。
[加算の前にキャスト] をオフにすると、加算演算前に和が加算形式にキャストされなくなります。この設定を選択すると、フィルターが使用するハードウェアを気にせずに最も正確な加算結果を得ることができます。[加算の前にキャスト] によって参照される入力形式は、使用するフィルター構造によって異なります。
[加算の前にキャスト] をオンまたはオフにした場合の影響を次に示します。
オフ — フィルター加算演算が前回の操作から継承された形式の和を保持するように構成します。
オン — 加算演算実行前の加算出力形式に合わせて和の入力形式を変換するようにフィルター加算演算を構成します。通常、[加算の前にキャスト] をオンにすると、デジタル信号プロセッサで見られる結果により近い加算結果が生成されます。
[コード生成] ペイン
[コード生成] ペインには、完成したフィルター設計のさまざまな実装に対するオプションが含まれています。ご使用のシステムに応じて、設計したフィルターからは、MATLAB、VHDL、および Verilog コードを生成できます。設計したフィルターから Simulink® モデルを作成または更新することもできます。以下の節では、これらのオプションについて説明します。
- HDL
これらのオプションの詳細については、Opening the Filter Design HDL Coder UI from the Filter Builder (Filter Design HDL Coder)を参照してください。
- MATLAB
フィルター仕様に基づいて MATLAB コードを生成します。
フィルターを出力として返す関数を生成します
このオプションを選択すると、
fdesign
を使用してフィルター オブジェクトを設計する関数が生成されます。データをフィルター処理する関数を生成します
このオプションを選択すると、データを入力として取り込み、設計したフィルターで処理されたデータを出力する関数が生成されます。フィルター出力のデータ型は、[データ型] ペインのデータ型設定に従って設定されます。
[MATLAB コードを生成] ボタンをクリックすると、ファイルの保存ダイアログ ボックスが表示されます。ファィル名と場所を指定して、保存します。これでフィルターが編集可能ファイルに含まれるようになりました。
- Simulink モデル
設計したフィルターから Simulink ブロックとサブシステムを生成できます。
[モデルの生成] をクリックすると、フィルター ビルダーによって、設計したフィルターから Simulink ブロックとサブシステムが生成されます。
[モデルの生成] ボタンをクリックすると、[Simulink にエクスポート] ダイアログ ボックスが開きます。
ブロック名 — 新しい Subsystem ブロックの名前。既定の設定では [フィルター] に設定されます。
作成先 —
[現在]
は、生成されたモデルを現在の Simulink モデルに保存します。[新規]
は、生成されたブロックを含む新しいモデルを作成します。[ユーザー定義]
は、新しいモデルまたはサブシステムを[ユーザー定義]
で指定された場所に作成します。生成された 'Filter' ブロックに上書きする — [ブロック名] で指定した名前の既存のブロックを上書きします。このチェック ボックスをオフにすると、同じ名前で新しいブロックが作成されます。
Simulink 基本要素を使ったモデルの作成 — 基本ブロックのみを使用してモデルを作成します。
0 のゲインを最適化する — モデルからゼロのゲイン ブロックをすべて削除します。
1 のゲインを最適化する — 1 のゲインを直接接続にすべて置き換えます。
負のゲインを最適化する — 1 の負のゲイン ブロックをすべて削除し、最も近い加算ブロックの符号を変更します。
遅延連鎖を最適化する — n の単位遅延からなる遅延連鎖を n の単一遅延で置き換えます。
1 のスケール値を最適化する — スケール値の 1 による乗算をフィルター構造からすべて削除します。
入力処理 — 生成されたフィルター ブロックまたはサブシステム ブロックによる入力の処理方法を指定します。設計しているフィルターのタイプに応じて、次のオプションのうちの 1 つまたは両方が利用できます。
チャネルとしての列 (フレーム ベース)
— ブロックは入力の各列を別々のチャネルとして扱います。チャネルとしての要素 (サンプル ベース)
— ブロックは入力の各要素を別々のチャネルとして扱います。
サンプルベースおよびフレームベースの処理の詳細については、サンプルベースおよびフレームベースの概念を参照してください。
モデルの実現 — 設定されたパラメーターを使用してモデルをビルドします。
[メイン] ペインで [System object を使用してフィルターを実装] チェック ボックスをオンにした場合、次の状況では [Simulink モデル] パネルの [モデルの生成] ボタンが無効になります。
[フィルター応答] で
[櫛形]
、[データ型] ペインの [演算] で[固定小数点]
を選択している。[フィルター応答] で
[任意応答法]
、[インパルス応答] で[IIR]
を選択し、[応答を指定] を[振幅と位相]
または[周波数応答]
、[データ型] ペインの [演算] を[固定小数点]
に設定している。
これらの設定では、固定小数点演算を含む
dsp.IIRFilter
System object™ が設計されます。固定小数点のdsp.IIRFilter
オブジェクトに対する Simulink モデルの生成はサポートされていません。
フィルター応答
filterBuilder
[応答選択] メイン メニューから、フィルター応答を選択します。
DSP System Toolbox ソフトウェアがインストールされている場合は、以下の [応答選択] メニューが表示されます。
メニューから目的のフィルター応答を選択し、フィルターを設計します。
次の節では、各応答タイプで利用可能なオプションについて説明します。
非整数遅延設計 — [メイン] ペイン
ノッチ
ピーク/ノッチ フィルター設計 — [メイン] ペインを参照してください。
バージョン履歴
R2009a で導入