Main Content

DSP System Toolbox ソフトウェアとフィルター デザイナーの使用

フィルター デザイナーでの高度なフィルターの設計

フィルター デザイナーの機能の概要

DSP System Toolbox™ ソフトウェアは、Signal Processing Toolbox™ ソフトウェアに付属のフィルター デザイナーに新しいダイアログ ボックスおよび動作モードと新しいメニュー選択を追加します。[量子化パラメーターの設定][周波数変換] という 2 つの追加のダイアログ ボックスでは、以下のことが可能になります。

  • Signal Processing Toolbox ソフトウェアが開発用の設計ツールに提供していない高度なフィルターを設計する。

  • ツールボックスで使用可能なフィルター構造の Simulink® モデルを表示する。

  • 設計モードを使用してこのアプリで設計する倍精度フィルターを量子化する。

  • インポート モードを使用してこのアプリにインポートする倍精度フィルターを量子化する。

  • 量子化されたフィルターを解析する。

  • 2 次セクション型フィルターをスケールする。

  • ツールにより表示される、以下の量子化フィルターのプロパティの量子化設定を選択する。

    • 係数 — フィルター係数に適用される量子化オプションを選択する

    • 入力/出力 — フィルターが入力データと出力データをどのように処理するかを制御する

    • フィルター内部 — フィルターの演算がどのように機能するかを指定する

  • マルチレート フィルターを設計する。

  • FIR フィルターと IIR フィルターの両方をある応答から別の応答に変換する。

フィルター デザイナーにフィルターをインポートしたら、量子化ダイアログ ボックス上のオプションでフィルターを量子化し、さまざまな量子化設定の効果を調査できます。

周波数変換ダイアログ ボックス内のオプションでは、応答形状の変更中もさまざまな重要な機能を維持しながら、フィルターの周波数応答を変更できます。

DSP System Toolbox ソフトウェアとフィルター デザイナーの使用

DSP System Toolbox ソフトウェアをツール スイートに追加すると、さまざまなフィルター設計法がフィルター デザイナーに追加されます。新しいフィルター応答は、Signal Processing Toolbox ソフトウェアで設計可能なものよりも複雑な要件を満たすフィルターを開発するために使用します。フィルター デザイナー内の設計はコマンド ライン関数として使用できますが、フィルター デザイナーのグラフィカル ユーザー インターフェイスを使用すれば、設計プロセスを明確にして、簡単に実行できるようにすることができます。

応答タイプを選択するときに、フィルター デザイナーの右側のペイン内のオプションを変更することによって、フィルターを定義する値を設定できます。選択したフィルター応答のオプションを表す図 ("設計マスク" と呼びます) が解析エリアに含まれていることも確認できます。

マスクを調査することによって、オプションの定義とそれらの使い方を確認できます。通常、これはローパス フィルターやハイパス フィルターでは簡単ですが、任意応答タイプやピーキング/ノッチング フィルターのオプションの設定が複雑になります。マスクを使用すると、結果の出力が容易になります。

フィルター設計法を変更すると、使用可能な応答タイプ オプションも変更されます。同様に、選択した応答タイプに応じて、選択可能なフィルター設計法が変更される場合があります。

ノッチ フィルターの設計

ノッチ フィルターの目的は、広範なスペクトルから 1 個または数個の周波数を削除することです。削除する周波数は、フィルター デザイナーで適切なフィルター設計オプションを設定することによって指定する必要があります。

  • 応答タイプ

  • 設計法

  • 周波数仕様

  • 振幅仕様

入力音楽信号スペクトルから協和音 A (440 Hz) を除去するノッチ フィルターを設計する方法を以下に示します。

  1. [応答タイプ][微分器] リストから Notching を選択します。

  2. [フィルター設計法][IIR] を選択し、リストから Single Notch を選択します。

  3. [周波数仕様] で、[単位]Hz に、[Fs] (フル スケール周波数) を 1000 に設定します。

  4. 正規化周波数と Hz のどちらかでノッチの中心の位置を設定します。440 Hz のノッチ中心の場合は、440 と入力します。

  5. ノッチを形成するには、[帯域幅] (bw) に 40 と入力します。

  6. [振幅仕様]dB (既定) のままにし、[Apass]1 のままにします。

  7. [フィルター設計] をクリックします。

    フィルター デザイナーが、フィルター係数を計算して、確認用の解析エリアでフィルター振幅応答をプロットします。

単一のノッチ フィルターを設計する場合は、フィルター次数を設定するためのオプションがありません。[フィルター次数] オプションは無効になっています。

フィルターは次のようになるはずです。

設計法の詳細については、オンライン ヘルプ システムを参照してください。たとえば、フィルター デザイナーでノッチ フィルターの [Q] 設定の詳細を確認するには、コマンド ラインで

doc iirnotch

と入力します。これにより、ヘルプ ブラウザーが開いて、関数 iirnotch の参照ページが表示されます。

他のフィルターの設計は同様の手順を辿り、設計要件などの個別の設計仕様オプションを調整します。

設計のいずれかをフィルター デザイナーで量子化し、[解析] メニューで使用可能な解析を使用して解析できます。

フィルター デザイナーの量子化機能へのアクセス

フィルター デザイナーの量子化パネルを使用してフィルターを量子化します。量子化は、フィルター デザイナーの、フィルター設計、フィルター変換、インポート モードに続く、4 番目の動作モードです。量子化モードに切り替えるには、MATLAB® コマンド プロンプトで以下を入力することによってフィルター デザイナーを開きます。

filterDesigner

フィルター デザイナーが開いたら、サイドバーで [量子化パラメーターの設定] ボタンをクリックします。フィルター デザイナーが量子化モードに切り替わり、フィルター デザイナーの下部に次のパネルが表示されます。このパネルでは、[フィルター演算] 用の既定の倍精度オプションがあります。

[フィルター演算] オプションを使用すれば、フィルターを量子化して、量子化設定の変更の影響を調査することができます。フィルター デザイナーで量子化設定を有効にするには、[フィルター演算]Fixed-point を選択します。

フィルター デザイナーの下側のパネルに量子化オプションが表示されます。フィルターを量子化するためのさまざまなオプションのセットにアクセスするタブが表示されます。

ダイアログ ボックス内の以下のタブを使用して、フィルター デザイナーでのフィルターの量子化に関係するタスクを実行します。

  • [係数] は、係数量子化を定義するための設定へのアクセスを提供します。これは、ツール内の量子化されたフィルターを使用せずにフィルター デザイナーを量子化モードに切り替えるときの既定でアクティブなパネルです。固定小数点フィルターをフィルター デザイナーにインポートする場合は、これが量子化モードに切り替えるときのアクティブなペインになります。

  • [入力/出力] は、フィルター デザイナーをフィルターに対する入力と出力を量子化するためのオプションに切り替えます。

  • [フィルター内部] を使用すれば、フィルターが実行する演算用のさまざまなオプション (フィルターが乗算演算の結果を処理する方法やフィルターがアキュムレータを使用する方法など) を設定することができます。

  • [適用] — フィルターの量子化パラメーターに加えた変更を適用します。

フィルター デザイナーでのフィルターの量子化

量子化パラメーターの設定

量子化されたフィルターには、フィルターするデータの量子化方法を定義するプロパティがあります。フィルター デザイナーの [量子化パラメーターの設定] ダイアログ ボックスを使用してプロパティを設定します。[量子化パラメーターの設定] ダイアログ ボックスのオプションを使用して、フィルター デザイナーでさまざまなタスクを実行できます。

  • ワークスペースからフィルターをインポートするか、フィルター デザイナーを使用してプロトタイプ フィルターを設計してから、倍精度フィルターから量子化されたフィルターを作成します。

  • 既定の構造 (直接型 II 転置) または選択された任意の構造と、選択されたその他のプロパティ値を持つ量子化されたフィルターを作成します。

  • フィルターを設計するか、ワークスペースからフィルターをインポートしてから、量子化されたフィルターの量子化プロパティ値を変更します。

[量子化パラメーターの設定] をクリックしてから、[フィルター演算]Fixed-point に変更すると、フィルター デザイナーで量子化されたフィルター パネルが開きます。そこでは、係数量子化オプションが既定値に設定されています。

係数オプション

量子化されたフィルターを構成するフィルター係数のプロパティを設定するために、フィルター デザイナーに分子係数の語長 (および IIR フィルターを使用する場合の分母係数の語長) 用のオプションが一覧表示されます。次の表に、各係数オプションとフィルターでのそのオプション設定の影響に関する短い説明を示します。

オプション名

用途

説明

分子係数 語長

FIR フィルターのみ

FIR フィルターで分子係数を表現するために使用される語長を設定します。

分子の小数部の長さ

FIR/IIR

FIR フィルターで分子係数を解釈するために使用される小数部の長さを設定します。

分子の範囲 (+/-)

FIR/IIR

分子が表す範囲を設定できます。[分子の小数部の長さ] オプションの代わりにこれを使用して精度を設定します。値 x を入力すると、結果の範囲が -x ~ x になります。範囲は正の整数にする必要があります。

係数の語長

IIR フィルターのみ

IIR フィルターで分子係数と分母係数の両方を表現するために使用される語長を設定します。分子係数と分母係数に別々の語長を設定することはできません。

分母の小数部の長さ

IIR フィルター

IIR フィルターで分母係数を解釈するために使用される小数部の長さを設定します。

分母の範囲 (+/-)

IIR フィルター

分母係数が表す範囲を設定できます。[分母の小数部の長さ] オプションの代わりにこれを使用して精度を設定します。値 x を入力すると、結果の範囲が -x ~ x になります。範囲は正の整数にする必要があります。

最良精度の小数部の長さ

すべてのフィルター

フィルターのパフォーマンスが最大になるような分子 (および使用可能な場合は分母) の小数部の長さの値を選択するようにフィルター デザイナーに指示します。このオプションをオンにすると、フィルターの小数部の長さオプションのすべてが無効になります。

スケール値の小数部の長さ

SOS IIR フィルター

SOS フィルターでスケール値を解釈するために使用される小数部の長さを設定します。

スケール値の範囲 (+/-)

SOS IIR フィルター

SOS スケール値が表す範囲を設定できます。これと SOS フィルターを使用して、フィルター セクション間で使用されるスケーリングを調整しますこの値を設定すると、[スケール値の小数部の長さ] オプションが無効になります。値 x を入力すると、結果の範囲が -x ~ x になります。範囲は正の整数にする必要があります。

符号なし表現を使用

すべてのフィルター

係数を符号なし値として解釈するようにフィルター デザイナーに指示します。

ダイナミック レンジ全体を利用するよう分子係数をスケーリングする

すべてのフィルター

分子係数の語長と小数部の長さの形式で定義されたダイナミック レンジを効率的に使用するために分子係数をスケールするようにフィルター デザイナーに指示します。

入力/出力オプション

量子化されたフィルターで入力値と出力値が使用される方法を指定するオプションは次の表にまとめられています。

オプション名

用途

説明

入力語長

すべてのフィルター

フィルターへの入力を表すために使用される語長を設定します。

入力の小数部の長さ

すべてのフィルター

フィルターへの入力値を解釈するために使用される小数部の長さを設定します。

入力範囲 (+/-)

すべてのフィルター

入力が表す範囲を設定できます。[入力の小数部の長さ] オプションの代わりにこれを使用して精度を設定します。値 x を入力すると、結果の範囲が -x ~ x になります。範囲は正の整数にする必要があります。

出力語長

すべてのフィルター

フィルターからの出力を表すために使用される語長を設定します。

オーバーフローを回避

すべてのフィルター

出力値が語長で定義された使用可能な範囲を超えない入力の小数部の長さを設定するようにフィルターに指示します。このオプションをオフにすると、[出力の小数部の長さ] を設定できます。

出力の小数部の長さ

すべてのフィルター

フィルターからの出力を表すために使用される小数部の長さを設定します。

出力範囲 (+/-)

すべてのフィルター

出力が表す範囲を設定できます。[出力の小数部の長さ] オプションの代わりにこれを使用して精度を設定します。値 x を入力すると、結果の範囲が -x ~ x になります。範囲は正の整数にする必要があります。

段階入力の語長

SOS フィルターのみ

SOS フィルター セクションへの入力を表すために使用される語長を設定します。

オーバーフローを回避

SOS フィルターのみ

値のオーバーフローが発生しない段階入力の小数部の長さを使用するようにフィルターに指示します。このオプションをオフにすると、[段階入力の小数部の長さ] を設定できます。

段階入力の小数部の長さ

SOS フィルターのみ

SOS フィルターのセクションへの入力を表すために使用される小数部の長さを設定します。

段階出力の語長

SOS フィルターのみ

SOS フィルター セクションからの出力を表すために使用される語長を設定します。

オーバーフローを回避

SOS フィルターのみ

値のオーバーフローが発生しない段階出力の小数部の長さを使用するようにフィルターに指示します。このオプションをオフにすると、[段階出力の小数部の長さ] を設定できます。

段階出力の小数部の長さ

SOS フィルターのみ

SOS フィルターのセクションからの出力を表すために使用される小数部の長さを設定します。

フィルター内部オプション

量子化されたフィルターで算術演算が実行される方法を指定するオプションは次の表にまとめられています。

オプション

同等のフィルターのプロパティ (ワイルドカード * の使用)

説明

丸めの方向

RoundMode

数値がデータ形式に対して表現できる値 (語長および小数部の長さ) の間に位置する場合に、フィルターがその値を量子化するために使用するモードを設定します。以下のいずれかを選択します。

  • ceil — 正の無限大方向に丸めます。

  • convergent — 最も近い表現可能な整数に丸めます。同順位が存在する場合は、最も近い偶数の保存整数に丸めます。これは、このソフトウェアで利用可能な最もバイアスのない方法です。

  • fix/zero — ゼロ方向に丸めます。

  • floor — 負の無限大方向に丸めます。

  • nearest — 最も近い整数に丸めます。同順位が存在する場合は、正の無限大方向に丸めます。

  • round — 最も近い整数に丸めます。同順位が存在する場合、負数に対しては負の無限大方向に丸め、正数に対しては正の無限大方向に丸めます。

オーバーフロー モード

OverflowMode

固定小数点演算におけるオーバーフロー状態に対応するためのモードを設定します。saturate (出力を表現可能な最大の正または負の値に制限) または wrap (モジュラー演算を使用して、オーバーフロー値を最も近い表現可能な値に設定) のいずれかを選択します。

フィルター乗算器 (乗算) オプション

乗算器モード

ProductMode

フィルターが乗算操作の出力を処理する方法を決定します。完全精度 (FullPrecision) を選択するか、語長を短縮しなければならない場合に結果内の最上位ビット (KeepMSB) と最下位ビット (KeepLSB) のどちらを維持するかを選択します。Specify all を使用すれば、乗算演算の結果に適用される小数部の長さを設定することができます。

乗算器の語長

*ProdWordLength

乗算演算の結果を解釈するために適用される語長を設定します。

分子係数の小数部の長さ

NumProdFracLength

分子係数を含む乗算演算の結果を解釈するために使用される小数部の長さを設定します。

分母の小数部の長さ

DenProdFracLength

分母係数を含む乗算演算の結果を解釈するために使用される小数部の長さを設定します。

フィルター合計オプション

アキュムレータ モード

AccumMode

積和の出力による値の保存方法を決定します。完全精度 (FullPrecision) を選択するか、出力結果の語長をアキュムレータがサポートする語長より短くしなければならない場合に結果内の最上位ビット (KeepMSB) と最下位ビット (KeepLSB) のどちらを維持するかを選択します。アキュムレータからの出力で使用される語長と精度 (小数部の長さ) を設定できるようにするには、これを Specify all に設定します。

アキュムレータの語長

*AccumWordLength

アキュムレータ/バッファーでのデータの保管に使用する語長を設定します。

分子係数の小数部の長さ

NumAccumFracLength

分子係数を解釈するために使用される小数部の長さを設定します。

分母の小数部の長さ

DenAccumFracLength

分母係数を解釈するために使用される小数部の長さを設定します。

加算前に信号をキャスト

CastBeforeSum

加算演算を行う前に、適切なアキュムレータ形式 (各フィルター構造の信号フロー図に表示される) に数値データをキャストするかどうかを指定します。

フィルター状態のオプション

状態の語長

*StateWordLength

フィルター状態を表すために使用される語長を設定します。分子関連状態と分母関連状態の両方に適用される

オーバーフローを回避

なし

小数部の長さを適切に設定して、演算によるオーバーフローを回避します。

状態の小数部の長さ

*StateFracLength

フィルター状態を解釈するために適用される小数部の長さを設定できます。分子関連状態と分母関連状態の両方に適用される

メモ

[フィルター内部] ペインで値に変更を適用すると、[振幅応答推定] 解析と [ノイズ パワースペクトルの丸め誤差] 解析に関するプロットがそれらの変更を反映するように更新されます。その他の解析タイプは、[フィルター内部] ペインでの値の変更の影響を受けません。

CIC フィルターのフィルター内部オプション

CIC フィルターでは、フィルターで固定小数点演算を指定するためのオプションが若干異なります。次の表に、オプションとその説明を示します。

倍精度フィルターの量子化.  固定小数点演算または単精度浮動小数点演算に切り替えることによって倍精度フィルターを量子化する場合は、以下の手順に従います。

  1. [量子化パラメーターの設定] をクリックして、フィルター デザイナーに [量子化パラメーターの設定] ペインを表示します。

  2. [フィルター演算]Single-precision floating point または Fixed-point を選択します。

    オプションの演算設定のいずれかを選択すると、フィルター デザイナーが [量子化パラメーターの設定] ペインのオプションの設定に従って現在のフィルターを量子化し、量子化されたフィルター データを表示するように解析エリアに表示される情報を変更します。

  3. 量子化ペインで、フィルターのオプションを設定します。[係数][入力/出力]、および [フィルター内部] のオプションを設定します。

  4. [適用] をクリックします。

    フィルター デザイナーが新しい設定を使用してフィルターを量子化します。

  5. フィルター デザイナーの解析機能を使用して、新しい量子化されたフィルターが要件を満たしているかどうかを判断します。

量子化されたフィルターの量子化プロパティの変更.  量子化されたフィルターの量子化に関する設定を変更する場合、または、MATLAB ワークスペースから量子化されたフィルターをインポートしたら、以下の手順に従ってフィルターのプロパティ値を設定します。

  1. 現在のフィルターが量子化されていることを確認します。

  2. [量子化パラメーターの設定] をクリックして、[量子化パラメーターの設定] パネルを表示します。

  3. フィルター量子化のプロパティ設定 ([係数][入力/出力]、および [フィルター内部]) を確認して選択します。これらのペイン上のオプションを設定すると、フィルターでフィルタリング操作中にデータが量子化される方法が決定されます。

  4. [適用] をクリックして、ステップ 3 の新しい量子化プロパティ設定を使用するように現在の量子化されたフィルターを更新します。

  5. フィルター デザイナーの解析機能を使用して、新しい量子化されたフィルターが要件を満たしているかどうかを判断します。

ノイズベースの方法を使用したフィルターの解析

振幅応答推定法を使用したフィルターの解析

フィルターを設計して量子化したら、[解析] メニューの [振幅応答推定] オプションを使用して、ノイズ負荷法をフィルターに適用できます。メニュー バーで[解析][振幅応答推定]を選択すると、フィルター デザイナーが、すぐに、この方法の基礎をなすモンテ カルロ試行を開始します。この試行は、フィルター デザイナーの解析エリアに結果を表示して終了します。

ノイズベースの方法を使用して、疑似ノイズ信号をフィルター入力に適用することによって判断されたフィルターの複素周波数応答を推定します。[振幅応答推定] は、モンテ カルロ試行を使用して、0 ~ Fs の範囲の完全な周波数成分を含むノイズ信号を生成します。解析を初めて実行するときには、振幅応答推定がテスト ポイント数や試行回数などのプロセスを定義するさまざまな条件に対して既定の設定を使用します。

解析パラメーター

既定の設定

説明

点数

512

単位円の上半分を覆っている等間隔点の数。

周波数範囲

0 to Fs/2

プロット x 軸の周波数範囲。

周波数単位

Hz

周波数範囲を指定するための単位。

サンプリング周波数

48000

サンプリング期間の逆。

周波数スケール

dB

出力の y 軸表示に使用される単位。

正規化周波数

Off

ディスプレイの正規化された周波数を使用します。

最初の解析実行が終了したら、[解析パラメーター] ダイアログ ボックスを開き、試行回数やポイント数を変更するなどして設定を適切に調整します。

[解析パラメーター] ダイアログ ボックスを開くには、フィルター デザイナーでフィルターが量子化されている場合に次のいずれかの手順を使用します。

  • メニュー バーから[解析][解析パラメーター]を選択する

  • フィルター解析エリアを右クリックして、コンテキスト メニューから [解析パラメーター] を選択する

どちらのオプションを選択してもダイアログ ボックスが開きます。オプションの設定に既定値が反映されていることに注意してください。

フィルターに適用されるノイズ法.  振幅応答推定法を説明するため、量子化されたフィルターの作成から始めます。この例では、フィルター デザイナーを使用して 6 次のバタワース IIR フィルターを設計します。

フィルター デザイナーでノイズベースの解析を使用するには

  1. MATLAB プロンプトで filterDesigner と入力して、フィルター デザイナーを起動します。

  2. [応答タイプ] で、[ハイパス] を選択します。

  3. [設計法]IIR を選択します。次に、Butterworth を選択します。

  4. フィルター次数を 6 に設定するために、[フィルター次数][次数指定] を選択します。テキスト ボックスに 6 と入力します。

  5. [フィルター設計] をクリックします。

    フィルター デザイナーの解析エリアが、フィルターの振幅応答を表示するように変化します。

  6. フィルターの量子化されたバージョンを生成するために、既定の量子化器設定を使用して、サイド バーで をクリックします。

    フィルター デザイナーが量子化モードに切り替わり、量子化パネルが表示されます。

  7. [フィルター演算] で、fixed-point を選択します。

    これで、解析エリアに両方のフィルター (オリジナルのフィルターと固定小数点演算バージョン) の振幅応答が表示されます。

  8. 最後に、量子化されたフィルターに対してノイズベースの推定を使用するために、メニュー バーで [解析][振幅応答推定] を選択します。

    フィルター デザイナーが、試行を実施して、フィルターの推定振幅応答を計算し、次の図に示すように、解析エリアに結果を表示します。

    上の図では、解析法によって推定された振幅応答が表示されています。

ノイズ パワー スペクトルの表示.  ノイズ法を使用してフィルターの振幅応答を推定する場合は、フィルター デザイナーがシミュレートしてフィルター応答をテストするためのノイズ値のスペクトルを適用します。シミュレートされたノイズは基本的にホワイトですが、フィルター デザイナーがフィルターをテストするために使用した実際のスペクトルを表示することをおすすめします。

[解析] メニュー バー オプションで、[ノイズ パワー スペクトルの丸め誤差] を選択します。フィルター デザイナーの解析エリアに、フィルター応答を推定するために使用されたノイズのスペクトルが表示されます。データ点の範囲や数などのノイズ スペクトルの詳細が [解析パラメーター] ダイアログ ボックスに表示されます。

詳細については、『McClellan, et al., Computer-Based Exercises for Signal Processing Using MATLAB 5, Prentice-Hall, 1998』を参照してください。『Project 5:Quantization Noise in Digital Filters (p. 231)』を参照してください。

ノイズ解析パラメーターの変更.  フィルターに適用されるノイズ法では、合成ホワイト ノイズを使用して、固定小数点ハイパス バタワース フィルターの振幅応答を推定しました。フィルター デザイナーで推定を 1 回だけ実行したため、ノイズ解析では、振幅応答推定法を使用したフィルターの解析に示す既定の解析パラメーター設定が使用されました。

設定を変更するには、量子化されたフィルターに対して初めてノイズ推定を使用した後で以下の手順に従います。

  1. フィルター デザイナーの解析エリアにノイズ推定法を実行した結果が表示された状態で、メニュー バーから [解析][解析パラメーター] を選択します。

    解析パラメーターへのアクセスを提供するために、[解析パラメーター] ダイアログ ボックスが開きます (既定の設定で)。

  2. スペクトルでより多くの点を使用して振幅応答を推定するには、[点数]1024 に変更して、[OK] をクリックし、解析を実行します。

    フィルター デザイナーが [解析パラメーター] ダイアログ ボックスを閉じて、ノイズ推定を再実行し、解析エリアに結果を戻します。

    ダイアログ ボックスを閉じずにテストを再実行するには、設定に新しい値を入力して Enter を押してから、[適用] をクリックします。これで、フィルター デザイナーがダイアログ ボックスを閉じずにテストを実行します。ノイズベースの解析のさまざまな設定を試す場合は、こうすると簡単に実行できます。

推定された振幅応答と理論上の振幅応答の比較

量子化されたフィルターの振幅応答を推定するためのノイズ法の有効性の重要な評価基準は、推定された応答と理論上の応答を比較することです。

この比較を実施する 1 つの方法は、推定された応答に理論上の応答を重ね合わせることです。フィルター デザイナーに振幅応答推定が表示された状態で、メニュー バーから [解析][解析の重ね合わせ] を選択します。その後で、[振幅応答] を選択し、解析エリアに両方の応答曲線を一緒に表示します。

量子化されたフィルターの構造の選択

フィルター デザイナーを使用すれば、量子化されたフィルターの構造を変更することができます。[構造の変換] オプションを使用して、フィルターの構造をニーズを満たす構造に変更します。

フィルター デザイナーでのフィルターの構造の変更方法を確認するには、フィルター構造の変換を参照してください。

量子化されたフィルターの構造の変換

[構造の変換] オプションを使用して、フィルターの構造を変更します。[ソース][設計 (量子化)] または [インポート (量子化)] の場合は、[構造の変換] を使用して、以下の構造のいずれかにフィルターを再キャストすることができます。

  • 直接型 II 転置フィルター構造

  • 直接型 I 転置フィルター構造

  • 直接型 II フィルター構造

  • 直接型 I フィルター構造

  • 直接型有限インパルス応答 (FIR) フィルター構造

  • 直接型 FIR 転置フィルター構造

  • ラティス自己回帰移動平均 (ARMA) フィルター構造

  • 直接型反対称 FIR フィルター構造 (任意の次数)

量子化されたフィルターを利用して、以下の表現のいずれかに変換できます。

  • 直接型 I

  • 直接型 II

  • 直接型 I 転置構成

  • 直接型 II 転置構成

  • ラティス自己回帰移動平均 (ARMA)

加えて、フィルター デザイナーを使用すれば、以下の変換を行うことができます。

  • 最小位相 FIR フィルターからラティス MA 最小位相へ

  • 最大位相 FIR フィルターからラティス MA 最大位相へ

  • オールパス フィルターからラティス オールパスへ

フィルターの 2 次セクション型への変換

フィルター デザイナーを使用して 2 次セクションを使用するように量子化されたフィルターを変換する方法を確認するには、2 次セクション型への変換を参照してください。インポートしたフィルターではなく、フィルター デザイナーで設計したフィルターが SOS 型で実装されることがわかります。

フィルター デザイナーでのフィルター構造の表示.  デモンストレーションを開くには、[ヘルプ][フィルター構造の表示] をクリックします。ヘルプ ブラウザーが開いて、現在のフィルターのリファレンス ページが開きます。このリファレンス ページでフィルター構造信号フロー図を探すか、他のフィルターのリファレンス ページに移動できます。

2 次セクション型フィルターのスケール

[2 次型の並べ替えとスケーリング] ダイアログ ボックスの使用

フィルター デザイナーには、SOS フィルターを作成後にスケールできる機能があります。[2 次型の並べ替えとスケーリング] ダイアログ ボックスのオプションを使用することにより、フィルター デザイナーはスケーリング オプションの選択に従って、フィルター分子とフィルター スケールの値のどちらかまたは両方をスケールします。

パラメーター

説明と有効値

スケール

フィルターにスケーリング オプションを適用します。SOS フィルターを並べ替えながら、同時にスケールする場合は、このオプションをオンにします。または、並べ替えるかどうかに関係なく、フィルターをスケールする場合にオンにします。既定で、スケーリングは無効になっています。

[オーバー フローの低減 — 最大の SNR] スライダー

スケーリングで、フィルターでの演算オーバーフローの低減とフィルター出力での S/N 比 (SNR) の最大化のどちらを優先するかを設定できます。右にスライダーを動かすと、オーバーフローの可能性よりも SNR の方が重視されます。マーキングは、SNR またはオーバーフロー保護で望ましい結果を得るために適用される P ノルムを表します。

分子係数の最大値

スケーリング後の分子係数の最大許容値。

分子の制約

分子係数値を制約するかどうか、およびその方法を指定します。オプションは、nonenormalizepower of 2、および unit です。none を選択すると、分子に対する制約を排除することによってスケーリングで分子のスケール値を使用できるようになります。ただし、係数が [分子係数の最大値] を超えた場合はクリップされるという制約だけは適用されます。Normalize を使用すると、分子の最大絶対値が [分子係数の最大値] 値と等しくなるように強制されます (他の制約については、[分子係数の最大値] が、係数がそれを超えたらクリップされる唯一の上限です)。power of 2 オプションは、スケーリングで 2 のべき乗である分子値 (2 や 0.5 など) を使用するように強制します。unit を使用すると、各分子の最初の係数が 1 の値に強制されます。

オーバーフロー モード

フィルターがスケーリング中の算術オーバーフロー状態をどのように処理するかを設定します。saturate (出力を表現可能な最大の正または負の値に制限) または wrap (モジュラー演算を使用して、オーバーフロー値を最も近い表現可能な値に設定) のいずれかを選択します。

スケール値の制約

フィルター スケール値を制約するかどうかと、どのように制約するかを指定します。有効なオプションは、unitpower of 2、および none です。制約の unit を選択すると、[最大のスケール値] 設定が無効になり、スケール値が 1 に強制されます。Power of 2 はスケール値が 2 や 0.5 などの 2 のべき乗になるように制約しますが、none は係数が [最大のスケール値] を超えることはできないということ以外のスケール値に対する制約をすべて排除します。

最大のスケール値

最大許容スケール値を設定します。SOS フィルター スケーリングでは、[最大のスケール値] の制限が、[スケール値の制約]unit (既定の設定) 以外の値に設定した場合にのみ適用されます。最大スケール値を設定すると、スケール値に対する他のすべての制限が排除されます。

オリジナル フィルターに戻す

フィルターを元のスケーリングに戻します。元のフィルターに戻すことができることで、フィルターのスケーリングの結果の評価が容易になります。

さまざまな設定の組み合わせを使用して、スケール値を変更せずにフィルター分子をスケールしたり、分子を変更せずにフィルター スケール値を調整したりできます。分母のスケーリング制御はありません。

SOS フィルターのスケーリング

フィルター デザイナーでローパス楕円フィルターを設計することからプロセスを開始します。

  1. フィルター デザイナーを起動します。

  2. [応答タイプ] で、[ローパス] を選択します。

  3. 設計法で、IIR 設計法リストから IIRElliptic を選択します。

  4. フィルターの [最小次数] を選択します。

  5. [単位] リストから Normalized(0 to 1) を選択することによって、周波数単位を切り替えます。

  6. 通過帯域仕様を設定するには、[wpass] に対して 0.45 と入力し、[wstop] に対して 0.55 と入力します。最後に、[振幅仕様] で、[Astop]60 に設定します。

  7. [フィルター設計] をクリックしてフィルターを設計します。

    フィルター デザイナーがフィルターの設計を終えると、ツールに以下のプロットと設定が表示されます。

    [オプション][厳密に一致] 設定が both になっているため、フィルター設計は通過帯域と阻止帯域の仕様を満たしています。

  8. フィルターのスケーリングに切り替えるには、メニュー バーから [編集] [2 次セクション型の並べ替えとスケーリング]を選択します。

  9. フィルター係数を表示するには、フィルター デザイナーに戻って、[解析] メニューから [フィルター係数] を選択します。フィルター デザイナーに、係数とスケール値が表示されます。

係数が表示された状態で、スケール値とフィルター係数におけるフィルターのスケーリングの影響を直接確認できます。

ここで、いくつかの方法でフィルターのスケーリングを試してみます。まずは、SNR が最大になるようにフィルターをスケールします。

  1. [2 次型の並べ替えとスケーリング] ダイアログ ボックスに戻って、左側のペインで [並べ替え][なし] を選択します。これにより、フィルター デザイナーでフィルターを再スケールしてもフィルター セクションが並べ替えられなくなります。

  2. [オーバー フローの低減 — 最大の SNR] スライダーを [オーバー フローの低減] から [最大の SNR] に移動します。

  3. [適用] をクリックして、フィルターをスケールし、ダイアログ ボックスを開いたままにします。

    しばらくして、フィルター デザイナーが係数の表示を更新し、新しいスケーリングが表示されます。

    これで、すべてのスケール係数が 1 になり、係数の SOS 行列には、どの分子係数も 1 ではなく、各セクションの最初の分母係数が 1 であることが表示されます。

  4. [元のフィルターに戻す] をクリックして、フィルターをスケーリングと係数のオリジナルの設定に戻します。

2 次セクション型フィルターのセクションの並べ替え

フィルター デザイナーを使用したフィルターの並べ替え

フィルター デザイナーは、ほとんどの離散時間フィルターを 2 次セクションで設計します。通常、SOS フィルターは、固定小数点フィルターを作成するときに、量子化変更の影響を受けません。フィルター デザイナー内にツールで設計した 2 次セクション型フィルターか、インポートした 2 次セクション型フィルターがある場合は、フィルター デザイナーにフィルターを構成するセクションの順序を変更するための機能が表示されます。フィルター デザイナー内の任意の SOS フィルターでセクションを並べ替えることができます。

フィルターのセクションを並べ替えるには、フィルター デザイナーの [2 次型の並べ替えとスケーリング] ダイアログ ボックスにアクセスします。

フィルター デザイナーで SOS フィルターを使用して、メニュー バーから[編集][2 次セクション型の並べ替えとスケーリング]を選択します。フィルター デザイナーがここで表示された並べ替えダイアログ ボックスを既定の設定に戻します。

[2 次型の並べ替えとスケーリング] ダイアログ ボックス上のコントロール

このダイアログ ボックスの左側に、SOS フィルターを並べ替えるためのオプションが表示されています。右側には、スケーリング オプションが表示されています。これらは独立して機能します。フィルターの並べ替えでスケーリングは要求されません ([スケール] オプションに注意してください)。また、スケーリングでフィルターの並べ替えは要求されません ([並べ替え][なし] オプションに注意してください)。SOS フィルターのスケーリングの詳細については、リファレンス セクションの2 次セクション型フィルターのスケールscale を参照してください。

SOS フィルターの並べ替えでは、[2 次型の並べ替えとスケーリング] ダイアログ ボックス内のオプションを使用する必要があります。次の表に、各並べ替えオプションと各オプションの説明を示します。

コントロール オプション

説明

自動

フィルターの出力ノイズ パワーが最小になるようにフィルター セクションを並べ替えます。ローパスやハイパスなどの仕様タイプごとに異なる並べ替えが適用されることに注意してください。自動次数はフィルターの仕様タイプに適合します。

None

フィルターの並べ替えを行いません。[なし] を選択した場合は、同時に並べ替えを適用せずにフィルターをスケールすることができます。現在のフィルターでこのダイアログ ボックスにアクセスした場合は、これが既定の設定になります。つまり、並べ替えが適用されません。

選択セクションを最小から最大にする

最小制限 (最低 Q) セクションが最初のセクションになり、最大制限 (最高 Q) セクションが最後のセクションになるようにフィルター セクションを再配置します。

選択セクションを最大から最小にする

最大制限 (最高 Q) セクションが最初のセクションになり、最小制限 (最低 Q) セクションが最後のセクションになるようにフィルター セクションを再配置します。

カスタムの並べ替え

[分子次数] オプションと [分母次数] オプションを有効にすることによって、使用するセクション次数を指定することができます。

分子次数

SOS フィルターのセクションの新しい次数を指定します。セクションのインデックスのベクトルを再配置する次数で入力します。たとえば、5 つのセクションからなるフィルターのインデックスは 1、2、3、4、および 5 です。2 番目のセクションと 4 番目のセクションを入れ替えると、ベクトルは [1,4,3,2,5] となります。

分子次数を使用

分母を分子に割り当てられた次数で再配置します。

Specify

分子の次数を使用するのではなく、分母の次数を指定できます。セクションのインデックスのベクトルを入力し、使用する分母の次数を指定します。たとえば、5 つのセクションからなるフィルターのインデックスは 1、2、3、4、および 5 です。2 番目のセクションと 4 番目のセクションを入れ替えると、ベクトルは [1,4,3,2,5] となります。

分子次数を使用

分子の次数に従ってスケール値を並べ替えます。

Specify

分子の次数を使用するのではなく、スケール値の次数を指定できます。セクションのインデックスのベクトルを入力し、使用する分母の次数を指定します。たとえば、5 つのセクションからなるフィルターのインデックスは 1、2、3、4、および 5 です。2 番目のセクションと 4 番目のセクションを入れ替えると、ベクトルは [1,4,3,2,5] となります。

オリジナル フィルターに戻す

フィルターをオリジナルのセクション次数に戻します。元のフィルターに戻すことができることで、セクションの実数の変更の結果の比較の評価が容易になります。

SOS フィルターの並べ替え.  フィルター デザイナーで現在のフィルターとして 2 次フィルターが開いている状態で、以下の手順を使用して、並べ替え機能にアクセスし、フィルターを並べ替えます。コマンド プロンプトからフィルター デザイナーを起動することから始めます。

  1. コマンド プロンプトで filterDesigner と入力して、フィルター デザイナーを起動します。

  2. 以下の設定を入力することによって、ローパス バタワース フィルターを次数 10 と既定の周波数仕様で設計します。

    • [応答タイプ] で、Lowpass を選択します。

    • [設計法] で、リストから IIRButterworth を選択します。

    • [フィルター次数][次数指定] で 10 に等しい次数を指定します。

    • [周波数仕様] の既定の Fs 値と Fc 値はそのままにします。

  3. [フィルター設計] をクリックします。

    フィルター デザイナーがバタワース フィルターを設計し、そのフィルターを 2 次セクションを使用して実装された直接型 II フィルターとして返します。[現在のフィルター情報] エリアに仕様が表示されます。

    フィルター デザイナーで 2 次フィルターを並べ替える場合は、フィルター デザイナーの [2 次型の並べ替えとスケーリング] 機能 (フィルターの可視化ツール FVTool でも使用可能) が使用されます。

  4. フィルターを並べ替えるには、フィルター デザイナーのメニューから[編集][2 次セクション型の並べ替えとスケーリング] を選択します。

これで、フィルターのセクションを並べ替える準備が整いました。フィルター デザイナーはセッション内の現在のフィルターに対して並べ替えを実行することに注意してください。

最も選択性の低いセクションから最も選択性の高いセクションへの並べ替えの使用.  フィルター デザイナーで最も選択性の低いセクションが最初で、最も選択性の高いセクションが最後になるようにフィルターを並べ替えるには、[2 次型の並べ替えとスケーリング] ダイアログ ボックスで以下の手順を実行します。

  1. [並べ替え] で、[選択セクションを最小から最大にする] を選択します。

  2. フィルターが同時にスケーリングしないようにするには、[スケーリング][スケール] をオフにします。

  3. フィルター デザイナーで、メニュー バーから[表示][SOS 表示設定] を選択し、フィルター デザイナーに表示されたフィルターのセクションが表示されるようにします。

  4. [SOS 表示設定] ダイアログ ボックスで、[個々のセクション] を選択します。この選択により、フィルター デザイナーの解析エリアにフィルターのセクションごとの振幅応答曲線が表示されるように設定されます。

  5. [2 次型の並べ替えとスケーリング] ダイアログ ボックスに戻って、[適用] をクリックし、フィルター セクションの Q に従ってフィルターを並べ替え、ダイアログ ボックスは開いたままにします。応答で、フィルター デザイナーが解析エリアにフィルター セクション (5 つのセクションがあるはずです) ごとの応答を表示します。

    次の 2 つの図で、フィルターのセクションの次数を比較できます。1 つ目の図では、元のフィルター セクションが表示されています。2 つ目の図では、セクションが最も選択性の低いものから最も選択性の高いものへ並べ替えられています。

並べ替えが行われたことは分かりますが、結果はあまり明確ではありません。ここで、フィルターのセクションのカスタムの並べ替えを試すか、最も選択性の高いものから最も選択性の低いものへの並べ替えオプションの使用を試します。

SOS フィルター セクションの表示

[SOS 表示設定] ダイアログ ボックスの使用

SOS フィルターのセクションを設計して並べ替えることができるため、フィルター デザイナーには解析エリアでフィルター セクションを表示する機能 (SOS 表示) があります。フィルター デザイナーで現在のフィルターとして 2 次セクション型フィルターを使用している場合は、[SOS 表示] オプションをオンにして、フィルター セクションを個別にまたは累積的に表示したり、一部のセクションだけを表示したりできます。[SOS 表示] をオンにすると、オフにするまで、フィルター デザイナーが、すべての 2 次セクション型フィルターにセクションが表示されるモードに変わります。SOS 表示モードは、解析エリアに表示されたすべての解析に適用されます。たとえば、フィルターの位相応答を表示するようにフィルター デザイナーを設定して、[SOS 表示] をオンにすると、フィルター デザイナーに SOS フィルターのセクションごとの位相応答が表示されることになります。

[SOS 表示設定] ダイアログ ボックス上のコントロール

[SOS 表示設定] では、フィルター デザイナーでセクションをどのように表示するかやどのセクションを表示するかを制御するためのいくつかのオプションが使用されます。フィルター デザイナーのメニュー バーから[表示][SOS 表示設定]を選択すると、SOS 表示操作を設定するためのオプションを含むこのダイアログ ボックスが表示されます。

既定で、[SOS 表示設定] には SOS フィルターの全体的な応答が表示されます。[SOS 表示設定] ダイアログ ボックス内のオプションを使用すれば、表示を変更することができます。次の表は、すべてのオプションとそれぞれのオプションの効果をまとめています。

オプション

説明

フィルター全体

これは、フィルター デザイナーの通常の表示です。2 次セクション型フィルターでは、個々のセクションの応答ではなく、全体的な応答のみが表示されます。これは既定の設定です。

個々のセクション

このオプションを選択すると、フィルター デザイナーに各セクションの応答が曲線として表示されます。フィルターに 5 つのセクションがある場合は、各セクションに 1 つずつ、5 つの応答曲線が表示され、それぞれの応答曲線は独立しています。[累積セクション] と比較してみてください。

累積セクション

このオプションを選択すると、フィルター デザイナーに各セクションの応答がフィルター内で前にあるすべてのセクションの累積応答として表示されます。フィルターに 5 つのセクションがある場合は、次のような 5 つの応答曲線が表示されます。

  • 最初の曲線は、フィルターの最初のセクションの応答をプロットします。

  • 2 番目の曲線は、フィルターの最初のセクションと 2 番目のセクションを合わせた応答をプロットします。

  • 3 番目の曲線は、フィルターの最初のセクション、2 番目のセクション、3 番目のセクションを合わせた応答をプロットします。

以下、表示にすべてのフィルター セクションが表示されるまで、同様になります。最後の曲線は、全体的なフィルター応答を表現しています。[個々のセクション] および [フィルター全体] と比較してみてください。

ユーザー定義

ここで、表示するセクションと表示順序を定義します。このオプションを選択するとテキスト ボックスが有効になり、フィルター セクションのインデックスの cell 配列を入力できるようになります。各インデックスは 1 つのセクションを表します。入力したインデックス 1 つごとに、1 つの応答がプロットされます。たとえば、{1:2} と入力すると、セクション 1 とセクション 2 を合わせた応答がプロットされます。フィルターに 4 つのセクションがある場合は、{1:4} と入力すると 4 つのセクションすべてを合わせた応答がプロットされ、{1,2,3,4} と入力すると各セクションの応答がプロットされます。cell 配列を入力したら、[OK] または [適用] をクリックして、フィルター デザイナーの解析エリアを新しい SOS 表示の設定に更新する必要があることに注意してください。

2 番目のスケーリング ポイントを使用

セクションをどこで分割するかを決定するために、セクションの 2 番目のスケーリング ポイントを使用するようにフィルター デザイナーに指示します。このオプションはフィルターが df2sos フィルターまたは df1tsos フィルターの場合にのみ適用されます。これらの構造では、2 番目のスケーリング ポイントはセクションの再帰部分と非再帰部分間のスケーリングの位置 (セクションの "中間") を参照しています。既定で、2 番目のスケーリング ポイントは有効になりません。このオプションは [累積セクション] でのみ使用します。

SOS フィルターのセクションの表示

フィルター デザイナーで SOS フィルターを設計またはインポートしたら、SOS 表示オプションを使用して、フィルターのセクション単位のパフォーマンスを表示することができます。フィルター デザイナーの [表示] メニューで [SOS 表示設定] をオンにすると、現在のフィルターが SOS フィルターの場合はいつでも、SOS フィルターのセクションが表示されるようにツールが設定されます。

次の手順では、SOS 表示を使用して、フィルター デザイナーに表示されたフィルター セクションを確認する方法を示します。

  1. フィルター デザイナーを起動します。

  2. バタワース設計法を使用してローパス SOS フィルターを作成します。フィルター次数を 6 に設定します。低次フィルターを使用すると、セクションがより明確に表示されるようになります。

  3. [フィルター設計] をクリックして、新しいフィルターを設計します。

    フィルター デザイナーが、フィルターを設計し、解析エリアに振幅応答を表示します。[現在のフィルター情報] に、フィルターの仕様が表示されます。3 つのセクションからなる 6 次直接型 II、2 次セクション型フィルターが表示されます。

  4. [SOS 表示設定] をオンにするには、メニュー バーから[表示][SOS 表示設定]を選択します。

    既定で、フィルター デザイナーの解析エリアには、個別のフィルター セクション応答ではなく、フィルター応答全体が表示されます。このダイアログ ボックスを使用すれば、セクションが表示されるように表示構成を変更することができます。

  5. 各フィルター セクションの振幅応答を表示するには、[個々のセクション] を選択します。

  6. [適用] をクリックして、各フィルター セクションの応答が表示されるようにフィルター デザイナーを更新します。解析エリアの表示が下の図のように変化します。

    フィルター位相応答が表示されるようにフィルター デザイナーを切り替える ([解析]、[位相応答] を選択) と、解析エリアに各フィルター セクションの位相応答が表示されます。

  7. セクションの独自の表示を定義するには、[ユーザー定義] オプションを使用して、表示するセクション インデックスのベクトルを入力します。これで、1 つ目のセクション応答と、1 つ目、2 つ目、および 3 つ目の累積セクション応答が表示されます。

    • [ユーザー定義] を選択して、ダイアログ ボックス内のテキスト入力ボックスを有効にします。

    • cell 配列 {1,1:3} を入力し、フィルター デザイナーにフィルターの 1 つ目のセクションの応答と最初の 3 つのセクションの累積応答が表示されるように指定します。

  8. 新しい SOS 表示選択を適用するには、[適用] または [OK] ([SOS 表示設定] ダイアログ ボックスが閉じます) をクリックします。

    フィルター デザイナーの解析エリアに、2 つの曲線 (1 つ目のフィルター セクションの応答用とセクション 1、2、3 を合わせた応答用) が表示されます。

量子化されたフィルターのインポートとエクスポート

概要と構造

量子化されたフィルターをフィルター デザイナーにインポートするまたは量子化されたフィルターをフィルター デザイナーからワークスペースにエクスポートする場合、インポート関数とエクスポート関数はオブジェクトを使用します。フィルターは変数として指定します。これは、フィルター構造を選択して、フィルター伝達関数のフィルター分子とフィルター分母を入力する、量子化されていないフィルターのインポートとエクスポートとは対照的です。

量子化されたフィルターを MATLAB ワークスペースにエクスポートしたり、テキスト ファイルにエクスポートしたり、MAT ファイルにエクスポートしたりするためのオプションがあります。

フィルター デザイナーでのフィルターのインポートとエクスポートに関する一般的な情報については、フィルター設計のインポートフィルター設計のエクスポートを参照してください。

フィルター デザイナーは、以下の構造を持つ量子化されたフィルターをインポートします。

  • 直接型 I

  • 直接型 II

  • 直接型 I 転置構成

  • 直接型 II 転置構成

  • 直接型対称 FIR

  • 直接型反対称 FIR

  • ラティス オールパス

  • ラティス AR

  • 最小位相ラティス移動平均 (MA)

  • 最大位相ラティス移動平均 (MA)

  • ラティス自己回帰移動平均 (ARMA)

  • ラティス結合オールパス

  • ラティス結合オールパス電力相補

量子化されたフィルターのインポート

MATLAB ワークスペースで量子化されたフィルターを設計するか、開いたら、フィルター デザイナーでそのフィルターを解析用にインポートすることができます。以下の手順に従ってフィルター デザイナーにフィルターをインポートします。

  1. フィルター デザイナーを開きます。

  2. メニュー バーから[ファイル][ワークスペースからフィルターをインポート]を選択するか、サイド パネルで [ワークスペースからフィルターをインポート] アイコンを選択します。

    .

    フィルター デザイナーの下側の領域で、[フィルター設計] ペインが [フィルターのインポート] になり、下の図のように量子化されたフィルターをインポートするためのオプションが表示されます。

  3. [フィルター構造] リストから、Filter object を選択します。

    フィルターをインポートするためのオプションが以下を含むように変化します。

    • 離散フィルター — ワークスペースで離散時間固定小数点フィルターの変数名を入力します。

    • 周波数単位[サンプリング周波数][単位] リストから周波数単位を選択し、必要に応じて、[Fs] にサンプリング周波数値を入力します。サンプリング周波数は、選択された単位に対応している必要があります。たとえば、Normalized (0 to 1) を選択すると、[Fs] が既定で 1 に設定されます。ただし、周波数オプションのいずれかを選択した場合は、選択した単位でサンプリング周波数を入力します。ワークスペースでサンプリング周波数が変数として定義されている場合は、サンプリング周波数の変数名を入力します。

  4. [インポート] をクリックして、フィルターをインポートします。

    フィルター デザイナーがワークスペースで指定されたフィルターをチェックします。フィルターが見つかれば、それをインポートし、そのフィルターの振幅応答を解析エリアに表示します。フィルターが見つからなかった場合は、[フィルター デザイナー エラー] ダイアログ ボックスを返します。

メモ

フィルター デザイナーのセッション中に、量子化モードに切り替え、固定小数点フィルターを作成した場合は、フィルター デザイナーが量子化モードのままになります。倍精度フィルターをインポートすると、フィルター デザイナーが自動的に最新の量子化パラメーターを適用してインポートされたフィルターを量子化します。
インポートしたフィルターの現在のフィルター情報をチェックすると、量子化されたフィルターをインポートしなかった場合でも、フィルターが ソース: imported (quantized) であることが示されます。

量子化されたフィルターをエクスポートするには

フィルター設計を保存するには、フィルター デザイナーを使用して、量子化されたフィルターを MATLAB ワークスペースにエクスポートすることができます (または、フィルター デザイナーで現在のセッションを保存できます)。量子化されたフィルターをエクスポートすることによって保存することにした場合は、以下のオプションのいずれかを選択します。

ワークスペースへの係数、オブジェクト、System object のエクスポート.  フィルターは、フィルター係数変数またはフィルター System object™ 変数として保存できます。

フィルターを MATLAB ワークスペースに保存するには、以下の手順に従います。

  1. [ファイル] メニューから [エクスポート] を選択します。[エクスポート] ダイアログ ボックスが表示されます。

  2. [出力場所] リストから Workspace を選択します。

  3. [出力形式] リストから、以下のオプションのいずれかを選択します。

    • フィルター係数を保存する場合は、Coefficients を選択します。

    • フィルター System object にフィルターを保存する場合は、System Objects を選択します。

    現在のフィルター構造が System object でサポートされていない場合は、System Objects オプションがドロップダウン リストに表示されません。

  4. 変数名を割り当てます。

    • 係数の場合は、[変数名][分子] オプションと [分母] オプションを使用して変数名を割り当てます。

    • System object の場合は、[離散フィルター] オプションで変数名を割り当てます。

    ワークスペース内に同名の変数があり、これらの変数を上書きする場合は、[変数を上書きする] ボックスをオンにします。

  5. [エクスポート] をクリックします。

    前のステップで、[変数を上書きする] を選択せずに、ワークスペース内に存在する変数名にフィルターをエクスポートしようとしないでください。これを行った場合は、フィルター デザイナーがエクスポート操作を停止します。ツールから、量子化されたフィルター名として指定された変数が既にワークスペース内に存在するという警告が返されます。

    • 既存の変数へのフィルターのエクスポートに進むには、[OK] をクリックして、警告を消去します。

    • その後で、[変数を上書きする] チェック ボックスをオンにし、[エクスポート] をクリックします。

テキスト ファイルとしてのフィルター係数のエクスポート.  量子化されたフィルターをテキスト ファイルとして保存するには、以下の手順に従います。

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

  2. [出力場所]Text-file を選択します。

  3. フィルターをエクスポートして、ダイアログ ボックスを閉じるには、[OK] をクリックします。[エクスポート] ダイアログ ボックスを閉じずに、フィルターをエクスポートするには、[適用] をクリックします。[適用] をクリックすると、[エクスポート] ダイアログ ボックスを開いたままで、量子化されたフィルターを複数の名前にエクスポートすることができます。

    [フィルター係数をテキスト ファイルにエクスポート] ダイアログ ボックスが表示されます。これは、Microsoft Windows® の標準的な [ファイルの保存] ダイアログ ボックスです。

  4. テキスト ファイルのフォルダーとファイル名を入力するか選択して、[OK] をクリックします。

    フィルター デザイナーが、量子化されたフィルターを指定された名前でテキスト ファイルとしてエクスポートし、MATLAB エディターが開いて、ファイルが編集用として表示されます。

MAT ファイルとしてのフィルター係数のエクスポート.  量子化されたフィルターを MAT ファイルとして保存するには、以下の手順に従います。

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

  2. [出力場所]MAT-file を選択します。

  3. フィルターの変数名を割り当てます。

  4. フィルターをエクスポートして、ダイアログ ボックスを閉じるには、[OK] をクリックします。[エクスポート] ダイアログ ボックスを閉じずに、フィルターをエクスポートするには、[適用] をクリックします。[適用] をクリックすると、[エクスポート] ダイアログ ボックスを開いたままで、量子化されたフィルターを複数の名前にエクスポートすることができます。

    [フィルター係数を MAT ファイルにエクスポート] ダイアログ ボックスが表示されます。このダイアログ ボックスは、Microsoft Windows の標準的な [ファイルの保存] ダイアログ ボックスです。

  5. テキスト ファイルのフォルダーとファイル名を入力するか選択して、[OK] をクリックします。

    フィルター デザイナーが、量子化されたフィルターを指定された名前の MAT ファイルとしてエクスポートします。

MATLAB コードを生成

MATLAB コードは、[ファイル][MATLAB コードを生成]メニューを使用して生成できます。このメニューには以下のオプションがあります。

  • フィルター設計関数 (System object を使用)

    このオプションは System object を生成します。現在のフィルターが System object でサポートされていない場合は、このオプションが無効になります。

  • データ フィルター処理関数 (System object を使用)

    このオプションは、入力データを現在のフィルター設計でフィルターする MATLAB コードを生成します。MATLAB コードは、codegen コマンドを使用して C/C++ コードに変換できます。現在のフィルターが System object でサポートされていない場合は、このオプションが無効になります。

XILINX Coefficient (.COE) ファイルのインポート

フィルター デザイナーへの XILINX .COE ファイルのインポート

XILINX 係数 (.coe) ファイルをフィルター デザイナーにインポートして、そのフィルター係数を使用して量子化されたフィルターを直接作成することができます。

ファイルのインポート機能を使用するには:

  1. フィルター デザイナーで [ファイル][XILINX Coefficient (.COE) ファイルからフィルターをインポート] を選択します。

  2. [XILINX Coefficient (.COE) ファイルからフィルターをインポート] ダイアログ ボックスで、インポートする .coe ファイルを探して選択します。

  3. [開く] をクリックしてダイアログ ボックスを閉じ、インポート プロセスを開始します。

    フィルター デザイナーが、係数ファイルをインポートして、量子化された単一セクションの直接型 FIR フィルターを作成します。

フィルター デザイナーを使用したフィルターの変換

フィルター デザイナーのフィルター変換機能

ツールボックスには、さまざまな形式にフィルターを変換するための関数が用意されています。ツールボックスをインストールした状態でフィルター デザイナーを使用すると、サイド バー ボタンとメニュー バー オプションによって、[フィルター変換] パネルを使用してフィルターを変換できるだけでなく、コマンド ライン関数も使用できるようになります。

フィルター デザイナーのメニュー バー ([変換]) で選択することによって、ローパス FIR および IIR フィルターをさまざまな通過帯域形状に変換できます。

FIR フィルターは次のように変換できます。

  • ローパスからローパスへ。

  • ローパスからハイパスへ。

IIR フィルターの場合は、次のように変換できます。

  • ローパスからローパスへ。

  • ローパスからハイパスへ。

  • ローパスからバンドパスへ。

  • ローパスからバンドストップへ。

サイド バーで [フィルター変換] ボタン をクリックすると、次の図のように、フィルター デザイナーで [フィルター変換] パネルが開きます。

[元のフィルター タイプ] のオプションは、変換する現在のフィルターのタイプを表します。ローパスを選択した場合は、ローパス フィルターを別のローパス フィルターまたはハイパス フィルターに、あるいは、その他の多くのフィルター形式 (実数と複素数) に変換できます。

メモ

オリジナルのフィルターが FIR フィルターの場合は、FIR と IIR の両方の変換後のフィルター タイプ オプションが [変換後のフィルター タイプ] リストに表示されます。両方のオプションがアクティブのままになります。これは、IIR 変換を FIR フィルターに適用できるためです。ソースが IIR フィルターの場合は、IIR 変換後のフィルター オプションだけがリストに表示されます。

元のフィルター タイプ

リストから、変換するフィルターの振幅応答を選択します。この選択によって変換後のフィルター タイプの選択肢が変化します。次に例を示します。

  • IIR フィルターで [ローパス] を選択した場合、変換後のフィルター タイプは次のうちいずれかになります。

    • ローパス

    • ハイパス

    • バンドパス

    • バンドストップ

    • マルチバンド

    • バンドパス (複素数)

    • バンドストップ (複素数)

    • マルチバンド (複素数)

  • FIR フィルターで [ローパス] を選択した場合、変換後のフィルター タイプは次のうちいずれかになります。

    • ローパス

    • ローパス (FIR)

    • ハイパス

    • ハイパス (FIR) 狭帯域

    • ハイパス (FIR) 広帯域

    • バンドパス

    • バンドストップ

    • マルチバンド

    • バンドパス (複素数)

    • バンドストップ (複素数)

    • マルチバンド (複素数)

下の表には、使用可能なオリジナルのフィルター タイプとオリジナルを変換可能なすべてのフィルター タイプが表示されています。

オリジナルのフィルター

使用可能な変換後のフィルター タイプ

ローパス FIR

  • ローパス

  • ローパス (FIR)

  • ハイパス

  • ハイパス (FIR) 狭帯域

  • ハイパス (FIR) 広帯域

  • バンドパス

  • バンドストップ

  • マルチバンド

  • バンドパス (複素数)

  • バンドストップ (複素数)

  • マルチバンド (複素数)

ローパス IIR

  • ローパス

  • ハイパス

  • バンドパス

  • バンドストップ

  • マルチバンド

  • バンドパス (複素数)

  • バンドストップ (複素数)

  • マルチバンド (複素数)

ハイパス FIR

  • ローパス

  • ローパス (FIR) 狭帯域

  • ローパス (FIR) 広帯域

  • ハイパス (FIR)

  • ハイパス

  • バンドパス

  • バンドストップ

  • マルチバンド

  • バンドパス (複素数)

  • バンドストップ (複素数)

  • マルチバンド (複素数)

ハイパス IIR

  • ローパス

  • ハイパス

  • バンドパス

  • バンドストップ

  • マルチバンド

  • バンドパス (複素数)

  • バンドストップ (複素数)

  • マルチバンド (複素数)

バンドパス FIR

  • バンドパス

  • バンドパス (FIR)

バンドパス IIR

バンドパス

バンドストップ FIR

  • バンドストップ

  • バンドストップ (FIR)

バンドストップ IIR

バンドストップ

また、変換オプションは、オリジナルのフィルターが FIR か IIR かによっても変化することに注意してください。FIR オリジナル フィルターは IIR 型または FIR 型に変換できます。IIR オリジナル フィルターは IIR ターゲット フィルターにしか変換できません。

応答タイプを選択したら、[変換する周波数点] を使用して、ターゲット フィルターに変換する、オリジナルのフィルター内の振幅応答点を指定します。ターゲット フィルターでは、応答形式は新しいものに変わりますが、通過帯域リップルなどの元のフィルターのパフォーマンス特性は継承されます。

フィルター変換の詳細については、Frequency Transformations for Real FiltersおよびFrequency Transformations for Complex Filtersを参照してください。

変換する周波数点

このフィールドに入力する周波数点は、振幅応答曲線上の振幅応答値 (dB 単位) を識別します。

[目的の周波数の位置を指定] オプションに周波数値を入力すると、周波数変換が変換後のフィルターの振幅応答をこのフィールドに入力された周波数点で特定される値に設定しようと試みます。

任意の場所を入力できますが、一般的にはフィルターの通過帯域エッジまたは阻止帯域エッジ、あるいは通過帯域または阻止帯域の値を指定するようにします。

[変換する周波数点] は、[目的の周波数の位置を指定] に入力された値における振幅応答を設定します。阻止帯域のエッジと通過帯域のエッジのどちらかでの値を指定します。

たとえば、ハイパス フィルターからバンドパス フィルターを作成している場合は、変換アルゴリズムが [目的の周波数の位置を指定] における変換後のフィルターの振幅応答を [変換する周波数点] 値における応答と同じに設定します。こうして、応答が低周波数の位置と高周波数の位置で同じバンドパス フィルターを得ることができます。これらの間の通過帯域が未定義であることに注意してください。次の 2 つの図では、オリジナルのハイパス フィルターと変換後のバンドパス フィルターを確認できます。

フィルター変換の詳細については、Digital Frequency Transformationsを参照してください。

変換後のフィルター タイプ

リストからターゲット フィルターの振幅応答を選択します。変換後のフィルター タイプの完全なリストは以下のとおりです。

  • ローパス

  • ローパス (FIR)

  • ハイパス

  • ハイパス (FIR) 狭帯域

  • ハイパス (FIR) 広帯域

  • バンドパス

  • バンドストップ

  • マルチバンド

  • バンドパス (複素数)

  • バンドストップ (複素数)

  • マルチバンド (複素数)

変換後のフィルターのすべてのタイプが、[元のフィルター タイプ] リスト上のすべてのフィルター タイプに使用できるわけではありません。バンドパス フィルターはバンドパス フィルターにしか変換できません。また、バンドストップ フィルターはバンドストップ フィルターにしか変換できません。さらに、IIR フィルターは IIR フィルターにしか変換できません。

フィルター変換の詳細については、Frequency Transformations for Real FiltersおよびFrequency Transformations for Complex Filtersを参照してください。

目的の周波数位置の指定

[変換する周波数点] に入力した周波数点は振幅応答の値と一致しました。振幅応答では、ここに入力する周波数のそれぞれで [変換する周波数点] の値によって特定される応答と同じになるように変換されます。

任意の場所を入力できますが、一般的にはフィルターの通過帯域エッジまたは阻止帯域エッジ、あるいは通過帯域または阻止帯域の値を指定するようにします。

フィルター変換の詳細については、Digital Frequency Transformationsを参照してください。

フィルターの変換.  フィルターの振幅応答を変換するには、サイド バーの [フィルター変換] オプションを使用します。

  1. フィルター デザイナーでフィルターを設計するか、インポートします。

  2. サイド バーの [フィルター変換] をクリックします。

    フィルター デザイナーで [フィルター変換] パネルが開きます。

  3. [元のフィルター タイプ] リストから、変換するフィルターの応答型を選択します。

    タイプ ([ローパス][ハイパス][バンドパス][バンドストップ] のいずれか) を選択すると、フィルター デザイナーが、フィルター型が FIR なのか IIR なのかを認識します。フィルター タイプの選択肢とフィルター型の両方を使用して、フィルター デザイナーが、オリジナルのフィルターに適用するものだけが表示されるように [変換後のフィルター タイプ] リストのエントリを調整します。

  4. [変換する周波数点] に、値を変換する周波数点を入力します。入力する値は kHz 単位にする必要があることに注意してください。たとえば、100 Hz の場合は 0.1、1500 Hz の場合は 1.5 と入力します。

  5. [変換後のフィルター タイプ] リストから、変換後のフィルターのタイプを選択します。

    ここでは、フィルター タイプを選択すると、オプションが変化します。

    • ローパスまたはハイパス フィルター タイプを選択した場合は、[目的の周波数の位置を指定] に 1 つの値を入力します。

    • バンドパスまたはバンドストップ フィルター タイプを選択した場合は、[目的の最低周波数の位置を指定][目的の最高周波数の位置を指定] にそれぞれ 1 つ値を入力します。この値によって、通過帯域または阻止帯域のエッジが定義されます。

    • マルチバンド フィルター タイプを選択した場合は、[目的の周波数の位置のベクトルを指定] にベクトル内の要素 (目的の位置ごとに 1 つずつの要素) として値を入力します。この値によって、通過帯域と阻止帯域のエッジが定義されます。

      [フィルター変換] をクリックすると、フィルター デザイナーがフィルターを変換して、新しいフィルターの振幅応答を表示し、フィルターが変換されたことを示すように [現在のフィルター情報] を更新します。フィルター情報で、[ソース][変換] になります。

      たとえば、ここに示す図には、2 つのフィルターの振幅応答曲線が含まれています。オリジナルのフィルターは、ロールオフが 0.2 ~ 0.25 のローパス フィルターです。変換後のフィルターは、ロールオフ領域が 0.8 ~ 0.85 のローパス フィルターです。

    • 狭帯域ハイパス または 高帯域ハイパス を選択した場合の影響を示すために、次の図は、狭帯域ハイパス フィルターと高帯域ハイパス フィルターの両方に変換されたソース ローパス フィルターの振幅応答曲線を示しています。比較するために、オリジナルのフィルターの応答も表示されています。



      狭帯域の場合は、変換アルゴリズムが基本的に振幅応答を反転させます。たとえば、曲線を y 軸の周りに反転させてから、原点が x 軸の 1 になるまで右に平行移動させます。反転と平行移動の後、高周波数における通過帯域が、同じロールオフ特性とリップル特性を持つ低周波数におけるオリジナルのフィルターの通過帯域を反転したものになります。

フィルター デザイナーでのマルチレート フィルターの設計

はじめに

MATLAB コマンド プロンプトからマルチレート フィルターを設計できるだけでなく、フィルター デザイナーはグラフィカル ユーザー インターフェイス ツールで同じ設計機能を提供しています。フィルター デザイナーを起動してマルチレート フィルター設計モードに切り替えることによって、ツールボックス内のすべてのマルチレート設計機能 (間引き、内挿、非整数レート変換フィルターなど) にアクセスできます。

マルチレート フィルター設計モードへのフィルター デザイナーの切り替え

フィルター デザイナーのマルチレート フィルター設計モードを使用すれば、間引きや内挿を含むさまざまなマルチレート フィルターを指定して設計することができます。

フィルター デザイナーが開いたら、サイドバーで [マルチレート フィルターの作成] をクリックします。フィルター デザイナーが設計モードに切り替わり、マルチレート フィルター設計オプションが表示されます。内挿係数が 2 の内挿フィルターを設計する既定のマルチレート設計設定を下の図に示します。この設計では、フィルター デザイナー内の現在の FIR フィルターが使用されます。

フィルター デザイナー内の現在のフィルターが FIR フィルターでない場合は、マルチレート フィルター設計パネルで [現在の FIR フィルターを使用] オプションが削除され、既定の設定の代わりに、[既定のナイキスト FIR フィルターを使用] オプションが選択されます。

[マルチレート設計] パネル上のコントロール

さまざまなマルチレート フィルターを設計可能なオプションが表示されます。タイプ オプションから始めます。このリストで、設計するマルチレート フィルターを選択できます。その選択に基づき、フィルターを指定する必要のあるコントロールを提供するように他のオプションが変化します。

設計パネルの他のセクションに注目してください。左側は、フィルター パフォーマンス仕様を設計して設定するためのマルチレート フィルターのタイプを選択するフィルター タイプ エリアです。

中央の部分では、フィルター デザイナーが、使用するフィルター設計法を選択するための選択肢を提供します。

右側の部分には、中央の部分で設計法として [カスケード接続積分器櫛形 (CIC)] を選択した場合のフィルター設定を制御するオプションが表示されます。Decimator タイプのフィルターと Interpolator タイプのフィルターの両方で、[カスケード接続積分器櫛形 (CIC)] オプションを使用してマルチレート フィルターを設計することができます。

マルチレート フィルター設計モードに切り替えた時に使用可能になるすべてのオプションを以下に示します。ここでは、オプションごとにその機能の簡単な説明が表示されます。

フィルターの選択と設定

オプション

説明

タイプ

設計するマルチレート フィルターのタイプを指定します。DecimatorInterpolator、または Fractional-rate convertor から選択します。

  • Decimator を選択したら、[間引き係数] を設定して、適用する間引きを指定します。

  • Interpolator を選択したら、[内挿係数] を設定して、適用する内挿量を指定します。

  • Fractional-rate convertor を選択したら、[内挿係数][間引き係数] の両方を設定します。フィルター デザイナーは、[内挿係数][間引き係数] で除算することによって非整数レート変換を特定し、信号内の非整数レート変換を特定します。互いに素である内挿と間引きの値を選択する必要があります。内挿係数と間引き係数が互いに素でない場合は、フィルター デザイナーが内挿/間引き非整数レートを最小公分母まで削減し、ステータス バーにメッセージを表示します。たとえば、内挿係数が 6 で間引き係数が 3 の場合は、フィルター デザイナーが 6/3 からレート変換器を設計する場合の 1/2 に削減します。ただし、内挿係数が 8 で間引き係数が 3 の場合は、フィルター デザイナーが変換なしでフィルターを設計します。

内挿係数

上下のコントロール矢印を使用して、信号に適用する内挿の量を指定します。係数の範囲は 2 以上です。

間引き係数

上下のコントロール矢印を使用して、信号に適用する間引きの量を指定します。係数の範囲は 2 以上です。

サンプリング周波数

ここでは、設定がありません。以下の [単位][Fs] だけです。

単位

FsHzkHzMHzGHz、または Normalized (0 to 1) のどの単位で指定されるかを指定します。

Fs

[単位] で指定された周波数単位でフル スケール サンプリング周波数を設定します。[単位]Normalized を選択した場合は、[Fs] の値を入力しません。

フィルターの設計

オプション

説明

現在の FIR フィルターを使用

現在の FIR フィルターを使用してマルチレート フィルターを設計するようにフィルター デザイナーに指示します。現在のフィルターが IIR 型の場合は、このオプションを選択できません。IIR 構造のマルチレート フィルターは設計できません。

既定のナイキスト FIR フィルターを使用

フィルター デザイナー内の現在のフィルターが FIR フィルターでない場合は、既定のナイキスト設計法を使用するようにフィルター デザイナーに指示します。

カスケード接続積分器櫛形 (CIC)

マルチレート設計パネルの右側のエリアに表示されたオプションを使用して CIC フィルターを設計します。

内挿を保持 (ゼロ次ホールド)

内挿を設計する場合は、信号値間で内挿する値をフィルターでどのように設定するかを指定できます。このオプションをオンにすると、次の信号値が処理されるまで内挿された各値の最新の信号値に内挿が適用されます。これは、サンプル アンド ホールド手法に似ています。[線形内挿] オプションと比較します。

線形内挿 (1 次ホールド)

内挿を設計する場合は、信号値間で内挿する値をフィルターでどのように設定するかを指定できます。このオプションをオンにすると、次の信号値が処理されるまで内挿された値を設定するために信号値間に線形内挿が適用されます。[線形内挿] オプションと比較します。

ホールド内挿と線形内挿の違いを確認するために、下の図に正弦波信号 s1 を 3 つの形式で示します。

  • 図で一番上のサブプロットは、内挿を使用しない信号 S1 を示します。

  • 真ん中のサブプロットは、内挿係数が 5 の線形内挿によって内挿された信号 S1 を示します。

  • 一番下のサブプロットは、内挿係数が 5 のホールド内挿によって内挿された信号 S1 を示します。

一番下の図では、ホールド内挿のサンプルとホールド特性、および線形内挿が適用された 1 次線形内挿を示します。

CIC フィルターを設計するためのオプション

説明

遅延差

CIC フィルターの遅延差を設定します。通常は、1 か 2 の値が適切です。

セクション数

CIC 間引きのセクション数を指定します。既定のセクション数は 2 で、範囲は任意の正の整数です。

非整数レート変換器の設計.  フィルター デザイナーでマルチレート フィルターを設計するために使用するプロセスを紹介するために、この例では、7/3 の非整数レートを使用する非整数レート変換器を設計するためのオプションを使用します。フィルター デザイナーで既定のローパス FIR フィルターを作成することから設計を始めます。この FIR フィルターから始める必要はなく、既定のフィルターでも十分機能します。

  1. フィルター デザイナーを起動します。

  2. Equiripple 設計法を使用して、最小次数ローパス FIR フィルターの設定を選択します。

  3. フィルター デザイナーにフィルターの振幅応答が表示されたら、サイド バーで をクリックします。フィルター デザイナーがマルチレート フィルター設計モードに切り替わり、マルチレート設計パネルが表示されます。

  4. 非整数レート フィルターを設計するには、[タイプ] リストから Fractional-rate convertor を選択します。[内挿係数] オプションと [間引き係数] オプションが使用可能になります。

  5. [内挿係数] で、上矢印を使用して、内挿係数を 7 に設定します。

  6. [間引き係数] で上矢印を使用して、間引き係数として 3 を設定します。

  7. Use a default Nyquist FIR filter を選択します。現在の FIR フィルターを使用してレート変換器を設計することもできます。

  8. [Fs] を設定するために、24000 と入力します。

  9. [マルチレート フィルターの作成] をクリックします。

    フィルターの設計が終わると、フィルター デザイナーが [現在のフィルター情報] に表示された新しいフィルターの仕様に戻り、フィルターの振幅応答を表示します。

フィルターは、ワークスペースにエクスポートし、それを使用して信号をフィルターすることによってテストできます。フィルターのエクスポートの詳細については、量子化されたフィルターのインポートとエクスポートを参照してください。

8 ビットの入力/出力データ用の CIC 間引きの設計.  フィルター デザイナーで設計可能な別の種類のフィルターがカスケード接続積分器櫛形 (CIC) フィルターです。フィルター デザイナーは、ニーズを満たすように CIC を設定するために必要なオプションを提供しています。

  1. フィルター デザイナーを起動し、既定の FIR ローパス フィルターを設計します。この時点でのフィルターの設計は省略可能なステップです。

  2. サイド バーで をクリックすることによって、フィルター デザイナーをマルチレート設計モードに切り替えます。

  3. [タイプ] で、[間引き] を選択し、[間引き係数]3 に設定します。

  4. CIC 実装を使用して間引きを設計するには、[カスケード接続積分器櫛形 (CIC)] を選択します。これにより、パネルの右側にある CIC 関連のオプションが有効になります。

  5. 遅延差を 2 に設定します。通常は、1 または 2 が適切です。

  6. [セッション数]2 と入力します。

  7. [マルチレート フィルターの作成] をクリックします。

    フィルター デザイナーが、フィルターを設計して、解析エリアに振幅応答を表示し、2 つのセクションからなる 10 次カスケード接続積分器櫛形間引きが設計されたことを示すように現在のフィルター情報を更新します。ソースが、フィルター デザイナーでフィルターを作成するためにマルチレート設計モードが使用されたことを示すマルチレート設計になっていることに注目してください。これで、フィルター デザイナーは次のようになるはずです。

他のマルチレート フィルターの設計も同じパターンに従います。

他のマルチレート フィルターを設計するには、設計するフィルターに応じて以下のいずれかを実行します。

  • 内挿を設計するには、以下のオプションのいずれかを選択します。

    • 既定のナイキスト FIR フィルターを使用

    • カスケード接続積分器櫛形 (CIC)

    • 内挿を保持 (ゼロ次ホールド)

    • 線形内挿 (1 次ホールド)

  • 間引きを設計するには、以下のオプションの中から選択します。

    • 既定のナイキスト FIR フィルターを使用

    • カスケード接続積分器櫛形 (CIC)

  • 非整数レート変換器を設計するには、[既定のナイキスト FIR フィルターを使用] を選択します。

マルチレート フィルターの量子化

フィルター デザイナーでマルチレート フィルターを設計したら、量子化機能を使用して、浮動小数点マルチレート フィルターを固定小数点演算に変換することができます。

メモ

CIC フィルターは常に固定小数点です。

マルチレート フィルターをフィルター デザイナーの現在のフィルターとして使用して、フィルターを量子化し、量子化オプションを使用して、フィルターで使用する固定小数点演算を指定できます。

マルチレート フィルターの量子化と設定.  以下の手順に従って、マルチレート フィルターを固定小数点演算に変換し、固定小数点オプションを設定します。

  1. マルチレート フィルターを設計またはインポートし、それがフィルター デザイナーの現在のフィルターであることを確認します。

  2. サイドバーで [量子化パラメーターの設定] ボタンをクリックします。

  3. [フィルター演算] ペインの [フィルター演算] リストで、[固定小数点] を選択します。フィルターが CIC フィルターの場合は、[固定小数点] オプションが既定で有効になるため、このオプションを設定する必要がありません。

  4. 量子化ペインで、フィルターのオプションを設定します。[係数][入力/出力]、および [フィルター内部] のオプションを設定します。

  5. [適用] をクリックします。

現在のフィルターが CIC フィルターの場合は、[入力/出力] ペインと [フィルター内部] ペイン上のオプションが CIC フィルターの特定の機能を提供するように変化します。

入力/出力.  CIC フィルターで入力値と出力値がどのように使用されるかを指定するオプションは次の表にまとめられています。

オプション名

説明

入力語長

フィルターへの入力を表すために使用される語長を設定します。

入力の小数部の長さ

フィルターへの入力値を解釈するために使用される小数部の長さを設定します。

入力範囲 (+/-)

入力が表す範囲を設定できます。[入力の小数部の長さ] オプションの代わりにこれを使用して精度を設定します。値 x を入力すると、結果の範囲が -x ~ x になります。範囲は正の整数にする必要があります。

出力語長

フィルターからの出力を表すために使用される語長を設定します。

オーバーフローを回避

出力値が語長で定義された使用可能な範囲を超えない入力の小数部の長さを設定するようにフィルターに指示します。このオプションをオフにすると、[出力の小数部の長さ] を設定できます。

出力の小数部の長さ

フィルターからの出力を表すために使用される小数部の長さを設定します。

出力範囲 (+/-)

出力が表す範囲を設定できます。[出力の小数部の長さ] オプションの代わりにこれを使用して精度を設定します。値 x を入力すると、結果の範囲が -x ~ x になります。範囲は正の整数にする必要があります。

[フィルターの精度] 設定を変更すると、使用可能なオプションが変化します。Full から Specify all に移動すると、より多くの入力語オプションと出力語オプションが有効になり、コントロールが増えます。

フィルター内部.  CIC フィルターを現在のフィルターとして使用すると、[フィルター内部] ペインの [フィルターの精度] オプションにフィルター語長と小数部の長さを制御するためのモードが追加されます。

そのための使用モードが 4 つあります (MATLAB プロンプトで CIC フィルター内の FilterInternals プロパティ用に選択したものと同じモード)。

  • Full — すべての語長と小数部の長さが Bmax + 1、つまり Baccum に設定されます。これは既定の設定です。

  • Minimum section word lengths — セクションの語長が丸めノイズと出力の要件を満たす最小値に設定されます。

  • Specify word lengths — 各セクションの語長を入力するための [セクションの語長] オプションが有効になります。すべてのセクションで同じ値を使用するための 1 つのスカラーを入力するか、セクションごとに 1 つずつの値のベクトルを入力します。

  • Specify all[セクションの小数部の長さ] に加えて [セクションの語長] オプションが有効になります。これで再び、スカラーと値のベクトルのどちらかを使用して、セクションごとに語長と小数部の長さの両方を指定できるようになります。

ワークスペースへのポリフェーズ フィルターの個別の位相係数のエクスポート

フィルター デザイナー アプリでポリフェーズ フィルターを設計したら、以下の方法によってフィルターの個別の位相係数を取得できます。

  1. フィルターを MATLAB ワークスペース内のオブジェクトにエクスポートする。

  2. polyphase メソッドを使用してフィルターの係数の行列を作成する。

オブジェクトへのポリフェーズ フィルターのエクスポート.  ポリフェーズ フィルターを MATLAB ワークスペース内のオブジェクトにエクスポートするには、以下の手順を実行します。

  1. フィルター デザイナーで、[ファイル] メニューを開いて、[エクスポート] を選択します。これにより、フィルター係数をエクスポートするためのダイアログ ボックスが開きます。

  2. [エクスポート] ダイアログ ボックスの [出力場所] で、[Workspace] を選択します。

  3. [出力形式] で、[オブジェクト] を選択します。

  4. (オプション) [変数名] に、MATLAB ワークスペースで作成される [マルチレート フィルター] オブジェクトの名前を入力します。

  5. [エクスポート] ボタンをクリックします。この例のマルチレート フィルター オブジェクト Hm が MATLAB ワークスペースに表示されます。

polyphase メソッドを使用した係数の行列の作成.  フィルターの係数の行列を作成するには、コマンド ラインで p=polyphase(Hm) と入力します。polyphase メソッドが、フィルター オブジェクト Hm からフィルター係数の行列 p を作成します。p の各行は、個別の位相サブフィルターの係数で構成されます。1 行目には 1 つ目の位相サブフィルターの係数が含まれ、2 行目には 2 つ目の位相サブフィルターの係数が含まれ、以降も同様になります。

Simulink サブシステム ブロックとしてのフィルターの実現

はじめに

フィルター デザイナーでフィルターを設計またはインポートしたら、モデルの実現機能を使用して、フィルターを実装する Simulink サブシステム ブロックを作成することができます。生成されたフィルター サブシステム ブロックでは、DSP System Toolbox ライブラリからのデジタル フィルター ブロックと、Simulink 内の Delay、Gain、および Sum ブロックのどちらかが使用されます。Fixed-Point Designer™ ライセンスがない場合でも、フィルター デザイナーは Simulink からの固定小数点モードのブロックを使用してモデルを実現しますが、ユーザーが Simulink 内のフィルター サブシステム ブロックを含むモデルを実行することはできません。

フィルター デザイナーの [モデルの実現] パネルについて

[モデルの実現] パネルと、量子化されたフィルターを Simulink サブシステム ブロックとして実現するためのオプションにアクセスするには、サイド バーで をクリックして、フィルター デザイナーをモデルの実現モードに切り替えます。

下のパネルは、フィルター デザイナーでどのようにフィルターを Simulink ブロックとして実装するかを構成するためのオプションを示しています。

これらのパラメーターについては、Filter Realization Wizard ブロック リファレンス ページの説明を参照してください。

フィルター デザイナーを使用したフィルターの実現.  フィルター デザイナー内の量子化されたフィルターが必要な位相と振幅応答、および正しい係数と型を使用して意図したとおりに動作している場合は、以下の手順に従ってフィルターを Simulink モデルで使用可能なサブシステムとして実現します。

  1. サイド バーで [モデルの実現] をクリックして、フィルター デザイナーをモデルの実現モードに変更します。

  2. [モデル][作成先] リストから、以下のいずれかを選択します。

    • 現在のモデル — 実現したフィルター サブシステムを現在のモデルに追加する場合

    • 新規モデル — 新しい Simulink モデル ウィンドウを開いて、フィルター サブシステムを新しいウィンドウに追加する場合

  3. [名前] フィールドで、新しいフィルター サブシステムの名前を指定します。

  4. 既存のブロックをこの新しいブロックで上書きするかどうかを決定して、[生成された 'Filter' ブロックに上書きする] チェック ボックスをオンまたはオフにします。

  5. [Simulink 基本要素を使ったモデルの作成] チェック ボックスをオンにして、フィルターを Sum、Gain、および Delay ブロックで構成されたサブシステム ブロックとして実装します。

  6. 適用する最適化をオンまたはオフにします。

    • 0 のゲインに対して最適化する — モデルの実現から 0 の gain ブロックを削除します。

    • 1 のゲインに対して最適化する — 1 の gain ブロックを隣接するブロックへの直接接続で置き換えます。

    • 負のゲインに対して最適化する — 負の gain ブロックを最も近い sum ブロックの符号の変更で置き換えます。

    • 遅延連鎖を最適化する — カスケード delay ブロックを等価のゲインを生成する単一 delay ブロックで置き換えます。

    • 1 のスケール値に対して最適化する — スケール値の 1 による乗算をフィルター構造からすべて削除します。

  7. [モデルの実現] をクリックし、選択した設定に基づいて、量子化されたフィルターをサブシステム ブロックとして実現します。

フィルター デザイナーで作成されたフィルター ブロック サブシステムをダブルクリックすると、フィルター実装が Simulink モデル形式で表示されます。フィルターを実現するときに選択したオプションと、最初に使用したフィルターに応じて、1 つ以上のセクションが表示されたり、量子化されたフィルターの型に基づく異なるアーキテクチャが表示されたりします。これ以降は、サブシステム フィルター ブロックが Simulink モデルで使用している他のブロックと同様に機能します。

関連するトピック