このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
フィルター デザイナー入門
フィルター デザイナー アプリによって、デジタル フィルターを設計および解析できます。また、既存のフィルター設計をインポートおよび変更できます。
フィルター デザイナー アプリを開くには、以下を入力します。
filterDesigner
フィルター デザイナー アプリが開き、[フィルター設計] パネルが表示されます。
フィルター デザイナー アプリを開いたときには、[フィルター設計] は有効になっていません。[フィルター設計] を有効にするには、既定のフィルター設計に変更を加えなければなりません。これは、フィルター設計を変更するたびに行う必要があります。[応答タイプ] や [フィルター次数] の下にあるようなラジオ ボタン項目やドロップダウン メニュー項目を変更するとすぐ、[フィルター設計] が有効になります。[Fs]、[Fpass]、および [Fstop] のようなテキスト ボックスの仕様を変更する場合、テキスト ボックスの外側をクリックして [フィルター設計] を有効にする必要があります。
フィルター タイプの選択
以下の応答タイプから選択できます。
ローパス
レイズド コサイン
ハイパス
バンドパス
バンドストップ
微分器
マルチバンド
ヒルベルト変換
任意振幅
DSP System Toolbox™ がインストールされている場合は、その他の応答タイプも使用できます。
メモ
特定の応答タイプでは、一部のフィルター設計法が使用できないことがあります。フィルター タイプを選択すると、使用可能なフィルター設計法が制限されることがあります。選択したフィルター タイプで使用できないフィルター設計法は、アプリの [設計法] 領域から削除されます。
フィルター設計法の選択
選択したフィルターの応答タイプに対し、既定のフィルター設計法を使用することができます。または、アプリに一覧表示されている使用可能な FIR 法や IIR 法から、フィルター設計法を選択することもできます。
Remez アルゴリズムを選択して FIR フィルター係数を計算するには、設計法のリストで [FIR] ラジオ ボタンを選択し、Equiripple
を選択します。
フィルター設計仕様の設定
フィルター仕様の表示
設定できるフィルター設計仕様は、フィルターの応答タイプや設計法により変化します。[解析] 、 [フィルター仕様] を選択するか、ツール バーの [フィルター仕様] ボタンをクリックすると、表示領域にフィルターの仕様が表示されます。
[表示] 、 [仕様マスク] を選択すると、設計されたフィルターの振幅プロットでフィルター仕様を表示することも可能です。
フィルター次数
等リップル フィルターを設計する場合には、フィルター次数を決定する 2 つのオプションのうちいずれかを使用できます。
次数指定: テキスト ボックスにフィルターの次数を入力します。
最小次数: フィルター設計法によって最小次数フィルターが決定されます。
フィルター次数の指定に関するオプションは、選択したフィルター設計法によって異なることに注意してください。フィルター設計法によっては、いずれかのオプションを使用できないことがあります。
オプション
使用可能なオプションは、選択したフィルター設計法によって異なります。設定可能なオプションが用意されているのは、FIR 等リップルと FIR ウィンドウによる設計法のみです。FIR 等リップルの場合のオプションは、[密度係数] です。詳細については、firpm
を参照してください。FIR ウィンドウの場合のオプションは、[通過帯域のスケーリング]、[ウィンドウ] です。以下にあげるウィンドウには、設定可能なパラメーターがあります。
ウィンドウ | パラメーター |
---|---|
チェビシェフ ( | サイドローブの減衰 |
ガウス ( | アルファ |
カイザー ( | ベータ |
テイラー ( | Nbar、サイドローブ レベル |
テューキー ( | アルファ |
ユーザー定義 | 関数名、パラメーター |
ウィンドウの可視化ツール (WVTool) で [表示] ボタンをクリックすると、ウィンドウが表示されます。
バンドパス フィルターの周波数に関する仕様
バンドパス フィルターでは、次の仕様を設定できます。
周波数の単位
Hz
kHz
MHz
正規化 (0 - 1)
サンプル レート
通過帯域周波数
阻止帯域周波数
通過帯域を指定するには、2 つの周波数を使用します。最初の周波数は通過帯域の低域側のエッジを、2番目の周波数は高域側のエッジを決定します。
同様に、阻止帯域も 2 つの周波数で指定します。最初の周波数は最初の阻止帯域の高域側のエッジ、2 番目の周波数は 2 番目の阻止帯域の低域側の周波数です。
バンドパス フィルターの振幅仕様
バンドパス フィルターでは、次の振幅応答の特性を指定できます。
振幅応答の単位 (dB、または、線形)
通過帯域リップル
阻止帯域の減衰量
フィルター係数の計算
フィルター設計の仕様を指定したら、[フィルター設計] ボタンをクリックしてフィルター係数を計算します。
メモ
[フィルター設計] ボタンは、フィルター設計の係数を計算した後、無効化されます。フィルター仕様を変更すると、このボタンを再度使用できるようになります。
フィルターの解析
フィルター応答の表示
以下のフィルター応答特性を、表示領域や独立したウィンドウに表示することができます。
振幅応答
位相応答
振幅応答と位相応答
群遅延応答
位相遅延応答
インパルス応答
ステップ応答
極-零点プロット
ゼロ位相応答は、振幅応答プロット、または振幅応答と位相応答プロットの y 軸のコンテキスト メニューから使用できます。
メモ
DSP System Toolbox がインストールされている場合は、振幅応答推定と丸めノイズ パワーという 2 つの解析を使用できます。これらの 2 つの解析は、フィルターの内部設定を使用する唯一の解析です。
同じプロットに 2 つの応答を表示するには、[解析] 、 [解析の重ね合わせ] を選択して、使用可能な応答を選択します。2 つ目の y 軸が応答プロットの右側に追加されます。(一部の応答では重ね合わせを表示できないことがあります)。
この領域では、フィルター係数と詳細なフィルター情報を表示することもできます。
ゼロ位相応答を除き、すべての解析法へは [解析]メニュー、コンテキス トメニューの [解析パラメーター] ダイアログ ボックス、またはツール バーのボタンからアクセスできます。ゼロ位相応答にアクセスするには、プロットの y 軸を右クリックして、コンテキスト メニューから [ゼロ位相] を選択します。
[表示] 、 [仕様マスク] を選択することで、振幅プロットにフィルター仕様を重ね合わせることができます。
データのヒントの使用
応答をクリックして、応答内の特定の点に関する情報を表示する、プロット データのヒントを追加できます。
データ ヒントの詳細については、プロット データの対話型の確認を参照してください。
スペクトル マスクの描画
振幅プロットにスペクトル マスク、すなわち除去領域線を追加するには、[表示] 、 [ユーザー定義スペクトル マスク] をクリックします。
マスクは、周波数ベクトルと振幅ベクトルで定義されます。これらのベクトルは同じ長さでなければなりません。
マスクを有効にする — 選択すると、マスク表示がオンになります。
正規化周波数 — 選択すると、表示されている周波数範囲にわたり、周波数が 0 ~ 1 に正規化されます。
周波数ベクトル — x 軸の周波数値のベクトルを入力します。
振幅単位 — 希望する振幅の単位を選択します。これらの単位は、振幅プロットで使用した単位と一致しなければなりません。
振幅ベクトル — y 軸の振幅値のベクトルを入力します。
サンプル レートの変更
フィルターのサンプル レートを変更するには、任意のフィルター応答プロット内を右クリックし、コンテキスト メニューから [サンプリング周波数] を選択します。
フィルター名を変更するには、[フィルター名] に新しい名前を入力します。
サンプル レートを変更するには、[単位] から希望する単位を選択し、[Fs] にサンプル レートを入力します
フィルター デザイナーで使用する既定値として表示パラメーターを保存するには、[既定の設定として保存] をクリックします。
既定値を復元するには、[既定の設定に戻す] をクリックします。
極-零点エディターを使用したフィルターの編集
極-零点プロットの表示
[極-零点エディター] パネルを使用して、極または零点、もしくはその両方を移動、削除、追加することにより、設計またはインポートしたフィルターの係数を編集できます。
メモ
フィルターが極-零点エディターを使用して設計または編集された場合は、([ファイル] 、 [MATLAB コードを生成] を選択して) MATLAB コードを生成することはできません。
量子化した極や零点は、移動できません。基準の極および零点のみを移動できまます。
サイドバーの [極-零点エディター] ボタンをクリックするか、[編集] 、 [極-零点エディター] を選択して [極-零点エディター] パネルを表示します。
極は "x
" のシンボルで、零点は "o
" のシンボルで表示されます。
極-零点プロットの変更
プロット モード ボタンは、極-零点プロットの左側にあります。極-零点プロットのモードを変更するには、対応するボタンをクリックします。極-零点エディターには、左から右へ順に、次のボタンがあります。[極-零点の移動]、[極を追加]、[零点を追加]、[極-零点の削除]
メモ
約 100 より大きい次数のフィルターの場合、伝達関数多項式の計算で極-零点エディターに数値の問題が発生することがあります。その結果、予想とは異なるフィルター応答が表示されることがあります。高次の多項式を計算せずに極と零点を検査するには、[解析] 、 [極-零点プロット] を選択します。このビューではフィルターを編集できません。
次のプロット パラメーターとコントロールは、極-零点プロットの左側、プロット モード ボタンの下にあります。
フィルターのゲイン — フィルターの極と零点のゲインを補正するファクター
座標 — 選択した極または零点の単位 (
Polar
またはRectangular
)振幅 — 極座標が選択された場合、選択した極または零点の振幅
角度 — 極座標が選択された場合、選択した極または零点の角度
実数部 — 直交座標が選択された場合、選択した極または零点の実数部分
虚数部 — 直交座標が選択された場合、選択した極または零点の虚数部分
セクション — 複数選択フィルターに対する既定セクションの数
複素共役 — 対応する共役極または零点を作成、または、既に存在する場合は共役極または零点を自動的に選択
自動更新 — 極または零点が追加、移動、削除されたときに直ちに表示されている振幅応答を更新
[編集] 、 [極-零点エディター] には、複数の極または零点の選択、極または零点の反転およびミラー、極または零点の削除、スケーリング、回転を行うためのメニュー項目があります。
共役対から極または零点を選択すると、[共役] チェック ボックスと共役が自動選択されます。
フィルター構造の変換
新規構造への変換
[編集] 、 [構造の変換] を使用して、現在のフィルターを新しい構造に変換できます。すべてのフィルターは次の表現に変換可能です。
直接型 I
直接型 II
直接型 I 転置
直接型 II 転置
ラティス自己回帰移動平均 (ARMA)
メモ
DSP System Toolbox がインストールされている場合は、[構造の変換] ダイアログ ボックスに追加の構造が表示されます。
また、特定のフィルター クラスでは次の変換を使用できます。
最小位相 FIR フィルターをラティス最小位相に変換可能
最大位相 FIR フィルターをラティス最大位相に変換可能
オールパス フィルターをラティス オールパスに変換可能
IIR フィルターをラティス自己回帰移動平均 (ARMA) に変換可能
メモ
あるフィルターの構造を別のものに変換すると、元のフィルター構造とは特性が異なる結果を生成することがあります。これは、コンピューターの演算精度の制限や、変換の丸め計算による誤差によるものです。
次に例を示します。
[編集] 、 [構造の変換] を選択して、[構造の変換] ダイアログ ボックスを開きます。
フィルター構造のリストから、
Direct-form
I
を選択します。
2 次セクションへの変換
[編集] 、 [2 次セクションに変換] を使用すると、変換したフィルター構造を、より次数の高いモノリシックな構造としてではなく、2 次セクションの集合体として保存できます。
メモ
以下のオプションは、2 次セクション フィルター構造の変更に使用する [編集] 、 [2 次セクションの並べ替えとスケーリング] でも使用します。
以下の [スケール] オプションは、直接型 II 構造を変換する場合にのみ使用できます。
None
(既定)L-2
(L2 ノルム)L-infinity
(L∞ ノルム)
[方向] (Up
または Down
) では、2 次セクションの順番を決定します。最適な順序は、[スケール] で選択されているオプションにより異なります。
次に例を示します。
[編集] 、 [2 次セクションに変換] を選択して、[2 次セクションに変換] ダイアログ ボックスを開きます。
L∞ ノルムによるスケーリングを行うには、[スケール] メニューから
L-infinity
を選択します。[方向] オプションは
Up
のままにしておきます。
メモ
2 次セクションから単一のセクションに戻すには、[編集] 、 [単一のセクションに変換] を使用します。
フィルター設計のエクスポート
係数またはオブジェクトのワークスペースへのエクスポート
フィルターは、フィルター係数変数、フィルター オブジェクト変数、または System object™ として保存できます。フィルターを MATLAB ワークスペースに保存するには、以下の手順に従います。
[ファイル] 、 [エクスポート] を選択します。[エクスポート] ダイアログ ボックスが表示されます。
[出力場所] メニューから
Workspace
を選択します。[出力形式] メニューから
[係数]
を選択してフィルター係数を保存するか、[オブジェクト]
を選択してフィルターをフィルター オブジェクトとして保存するか、[System object]
を選択してフィルターを System object として保存します。フィルターを System object として保存するには、DSP System Toolbox のライセンスを所有していなければなりません。係数を保存する場合は、[変数名] 領域の [分子係数] (FIR フィルターの場合) か、[分子係数] と [分母係数] (IIR フィルターの場合) または [SOS 行列] と [スケール値] (2 次セクション IIR フィルターの場合) の各テキスト ボックスを使用して変数名を割り当てます。
オブジェクトの場合は、[離散フィルター] テキスト ボックスで変数名を割り当てます。ワークスペース内に同名の変数があり、これらの変数を上書きする場合は、[変数を上書きする] チェック ボックスを選択します。
[エクスポート] ボタンをクリックします。
係数の ASCII ファイルへのエクスポート
フィルター係数をテキストファイルに保存するには、次の手順にしたがいます。
[ファイル] 、 [エクスポート] を選択します。[エクスポート] ダイアログ ボックスが表示されます。
[出力場所] メニューから
Coefficients
File
(ASCII)
を選択します。[エクスポート] ボタンをクリックします。[フィルター係数を FCF ファイルにエクスポート] ダイアログ ボックスが表示されます。
ファイル名を選択または入力して [保存] ボタンをクリックします。
係数が指定したテキスト ファイルに保存され、MATLAB エディターにファイルが表示されます。テキスト ファイルには、MATLAB のバージョン番号、Signal Processing Toolbox™ のバージョン番号、およびフィルター情報などのコメントも含んでいます。
係数またはオブジェクトの MAT ファイルへのエクスポート
フィルター係数、フィルター オブジェクト、またはフィルター System object を MAT ファイルに保存するには、次のようにします。
[ファイル] 、 [エクスポート] を選択します。[エクスポート] ダイアログ ボックスが表示されます。
[出力場所] メニューから
[MAT ファイル]
を選択します。[出力形式] メニューから
[係数]
を選択してフィルター係数を保存するか、[オブジェクト]
を選択してフィルターをフィルター オブジェクトとして保存するか、[System object]
を選択してフィルターを System object として保存します。フィルターを System object として保存するには、DSP System Toolbox のライセンスを所有していなければなりません。係数を保存する場合は、[変数名] 領域の [分子係数] (FIR フィルターの場合) か、[分子係数] と [分母係数] (IIR フィルターの場合) または [SOS 行列] と [スケール値] (2 次セクション IIR フィルターの場合) の各テキスト ボックスを使用して変数名を割り当てます。
オブジェクトの場合は、[離散フィルター] (または [量子化フィルター]) テキスト ボックスで変数名を割り当てます。ワークスペース内に同名の変数があり、これらの変数を上書きする場合は、[変数を上書きする] チェック ボックスを選択します。
[エクスポート] ボタンをクリックします。[フィルター係数を MAT ファイルにエクスポート] ダイアログ ボックスが表示されます。
ファイル名を選択または入力して [保存] ボタンをクリックします。
Simulink モデルへのエクスポート
Simulink® がインストールされている場合、フィルター設計の Simulink ブロックをエクスポートして、新規または既存の Simulink モデルへ挿入できます。
フィルター デザイナーで使用可能な任意のフィルター設計法を使用して設計したフィルターをエクスポートすることができます。
メモ
DSP System Toolbox と Fixed-Point Designer™ がインストールされている場合は、CIC フィルターを Simulink モデルにエクスポートできます。
フィルターの設計が完了したら、サイドバーの [モデルの実現] ボタンをクリックするか、[ファイル] 、 [Simulink モデルへエクスポート] をクリックします。[モデルの実現] パネルが表示されます。
ブロックに対して使用する名前を [ブロック名] に入力します。
ブロックを現在の (最後に選択された) Simulink モデルに挿入するには、[作成先] を
[現在]
に設定します。ブロックを新規モデルに挿入するには、[新規]
を選択します。ブロックをユーザー定義のサブシステムに挿入するには、[ユーザー定義]
を選択します。このパネルで以前に作成したブロックを上書きする場合は、[生成された 'Filter' ブロックに上書きする] チェック ボックスを選択します。
[Simulink 基本要素を使ったモデルの作成] チェック ボックスを選択すると、フィルターは個別のサブ要素を使用するサブシステム (Simulink) ブロックとして作成されます。このモードでは、次の最適化が利用できます。
0 のゲインを最適化する
— フィルター構造から値がゼロのゲイン パスを削除1 のゲインを最適化する
— フィルター構造の 1 のゲインの代わりに結線 (短絡) を使用負のゲインを最適化する
— フィルター構造の -1 のゲインの代わりに結線 (短絡) を使用し、フィルター構造の対応する加算を減算に変更遅延連鎖を最適化する
—n
個の単位遅延で構成された遅延連鎖の代わりに、n
の単一の遅延を使用1 のスケール値を最適化する
— 1 と等しいスケール値の乗算をフィルター構造から除去
以下の図は、各最適化の効果を示します。
メモ
[Simulink 基本要素を使ったモデルの作成] チェック ボックスは、DSP System Toolbox ライセンスがあり、Biquad Filter (DSP System Toolbox) ブロックまたは Discrete FIR Filter (Simulink) ブロックを使用してフィルターを設計できる場合にのみ有効になります。詳細については、DSP System Toolbox ドキュメンテーションの Filter Realization Wizard (DSP System Toolbox) ブロックのトピックを参照してください。
[入力処理] パラメーターを設定して、生成されるフィルターが入力に対し、その処理をサンプルベースで行うか、またはフレームベースで行うかを指定します。設計するフィルターのタイプに応じて、次のオプションのうちの 1 つまたは両方が利用できます。
チャネルとしての列 (フレーム ベース)
— このオプションを選択すると、ブロックは入力の各列を別々のチャネルとして扱います。チャネルとしての要素 (サンプル ベース)
— このオプションを選択する場合、ブロックは入力の各要素を別々のチャネルとして扱います。
[モデルの実現] ボタンをクリックしてフィルター ブロックを作成します。[Simulink 基本要素を使ったモデルの作成] チェック ボックスを選択すると、フィルター デザイナーによって、Add (Simulink)、Gain (Simulink)、および Delay (Simulink) の各ブロックを使用するサブシステム ブロックとしてフィルターを実装できます。
Simulink Filter ブロックをダブルクリックすると、フィルター構造が表示されます。
C ヘッダー ファイルの生成
フィルターに関する情報を外部の C プログラムに含めたい場合があります。フィルター パラメーターのデータが格納された変数を含む C ヘッダー ファイルを作成するには、次の手順にしたがいます。
[ターゲット] 、 [C ヘッダーの生成] を選択します。[C ヘッダーの生成] ダイアログ ボックスが表示されます。
C ヘッダー ファイルで使用する変数名を入力します。それぞれのフィルター構造によって、ファイル内に生成される変数が異なります。
フィルター構造
変数パラメーター
直接型 I
直接型 II
直接型 I 転置
直接型 II 転置
[分子係数]、[分子係数 長さ]、[分母]、[分母係数 長さ]
ラティス自己回帰移動平均 (ARMA)
[ラティス係数]、[ラティス係数長さ]、[ラダー係数]、[ラダー係数長さ]
ラティス移動平均 (MA)
[ラティス係数]、[ラティス係数 長さ] および [セクション数] (フィルターにセクションが 1 つしかない場合は無効)
直接型 FIR 直接型 FIR 転置
[分子係数]、[分子係数 長さ] および [セクション数] (フィルターにセクションが 1 つしかない場合は無効)
長さ変数には、そのタイプの係数の総数が格納されます。
メモ
変数名として、
for
のような C 言語の予約語を使用することはできません。[推奨形式] を選択して提示されたデータ型を使用するか、[出力形式] を選択して、希望するデータ型をプルダウンから選択します。
メモ
DSP System Toolbox ソフトウェアをインストールしていない場合は、倍精度浮動小数点以外のデータ型を選択すると、結果として得られるフィルターがフィルター デザイナーで設計したものと正確に一致しなくなります。これは、四捨五入や切り捨てにおける誤差によるものです。
[生成] をクリックすると、ファイルは保存されますが、ダイアログ ボックスは開いたまま残り、別の C ヘッダー ファイルを定義することができます。ダイアログ ボックスを閉じるには、[閉じる] をクリックします。
MATLAB コードの生成
コマンド ラインからフィルター デザイナーで設計したフィルターを作成する MATLAB コードを生成することができます。[ファイル] 、 [MATLAB コードを生成] 、 [フィルター設計関数] を選択し、[MATLAB コードを生成] ダイアログ ボックスでファイル名を指定します。
メモ
フィルターが極-零点エディターを使用して設計または編集された場合は、([ファイル] 、 [MATLAB コードを生成] 、 [フィルター設計関数] を選択して) MATLAB コードを生成することはできません。
以下は、フィルター デザイナーの既定のローパス フィルターに対して生成された MATLAB コードです。
function Hd = ExFilter %EXFILTER Returns a discrete-time filter object. % % MATLAB Code % Generated by MATLAB(R) 7.11 and the Signal Processing Toolbox 6.14. % % Generated on: 17-Feb-2010 14:15:37 % % Equiripple Lowpass filter designed using the FIRPM function. % All frequency values are in Hz. Fs = 48000; % Sample Rate Fpass = 9600; % Passband Frequency Fstop = 12000; % Stopband Frequency Dpass = 0.057501127785; % Passband Ripple Dstop = 0.0001; % Stopband Attenuation dens = 20; % Density Factor % Calculate the order from the parameters using FIRPMORD. [N, Fo, Ao, W] = firpmord([Fpass, Fstop]/(Fs/2), [1 0], [Dpass, Dstop]); % Calculate the coefficients using the FIRPM function. b = firpm(N, Fo, Ao, W, {dens}); Hd = dfilt.dffir(b); % [EOF]
既定のセッションでのフィルターの管理
現在のフィルター デザイナー セッションで設計したフィルターは、カスケード表示、エクスポート、または現在や将来のフィルター デザイナー セッションでの再呼び出しのために、登録することができます。
保存されたフィルターは、[現在のフィルター情報] ペインの [フィルターの登録] および [フィルター マネージャー] ボタンを使用して、登録およびアクセスします。
フィルターの登録 —[フィルターの登録] ダイアログ ボックスが表示され、フィルターのフィルター マネージャーへの登録に使用するフィルター名を指定します。既定の名前は、フィルターのタイプです。
フィルター マネージャー — フィルターマネージャーを開きます。
現在のフィルターは、リスト ボックスの下に一覧表示されます。現在のフィルターを変更するには、希望するフィルターを強調表示します。[現在のフィルターを編集] を選択すると、フィルター デザイナーに現在選択されているフィルター仕様が表示されます。仕様を変更すると、登録したフィルターは直ちに更新されます。
2 つ以上のフィルターをカスケード表示するには、希望するフィルターを強調表示し、[カスケード] をクリックします。新規のカスケード フィルターが [フィルター マネージャー] に追加されます。
登録されたフィルターの名前を変更するには、[名前の変更] をクリックします。[フィルター名の変更] ダイアログ ボックスが表示されます。
登録したフィルターを フィルター マネージャーから削除するには、[削除] をクリックします。
フィルター設計セッションを保存する/開く
フィルター設計セッションを MAT ファイルとして保存し、別の機会に同じセッションに戻ることができます。
[セッションの保存] ボタンを選択して、セッションを MAT ファイルとして保存します。はじめてセッションを保存する場合、[フィルター設計セッションを保存] ブラウザーが開き、セッション名の入力が求められます。
フィルター設計セッションを保存すると、拡張子 .fda
が自動的に追加されます。
メモ
セッションの保存には、[ファイル] 、 [セッションの保存] や [ファイル] 、 [セッションに名前を付けて保存] を使用することもできます。
[セッションを開く] ボタンを選択するか、[ファイル] 、 [セッションを開く] を選択して、既存のセッションを フィルター デザイナーに読み込むことができます。[フィルター設計セッションを読み込む] ブラウザーが開き、以前に保存されたフィルター設計セッションから選択できます。