最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

LMS Filter

LMS 適応アルゴリズムを使用した出力、誤差および重みの計算

ライブラリ

Filtering / Adaptive Filters

dspadpt3

説明

LMS Filter ブロックは、5 つの異なるアルゴリズムを使用して適応 FIR フィルターを実装することができます。ブロックは、出力信号 y(n) と目的の信号 d(n) 間での誤差 e(n) を最小化するために必要なフィルターの重みまたは係数を推定します。フィルター処理を行う信号を Input 端子に接続します。入力信号はスカラーまたは列ベクトルにすることができます。目的の信号を Desired 端子に接続します。目的の信号は入力信号と同じデータ型、実数/複素数および次元をもたなければなりません。Output 端子はフィルター処理された入力信号を出力します。これが目的の信号の推定になります。Error 端子は目的の信号から出力信号を差し引いた結果を出力します。

[Algorithm] パラメーターに [LMS] を選択すると、ブロックは最小平均二乗 (LMS) アルゴリズムを使ってフィルターの重みを計算します。このアルゴリズムは次の方程式で定義します。

y(n)=wT(n1)u(n)e(n)=d(n)y(n)w(n)=αw(n1)+f(u(n),e(n),μ)

このブロックで使用できる各種の LMS 適応フィルター アルゴリズムは、以下のように定義されます。

  • LMS:

    f(u(n),e(n),μ)=μe(n)u*(n)

  • 正規化 LMS:

    f(u(n),e(n),μ)=μe(n)u(n)ε+uH(n)u(n)

    正規化された LMS では、重みの更新時に数値が不安定になる可能性を克服するため、小さい正の定数 ε が分母に追加されました。倍精度浮動小数点入力の場合、ε は 2.2204460492503131e-016 です。単精度浮動小数点入力の場合、ε は 1.192092896e-07 です。固定小数点入力の場合、ε は 0 です。

  • 符号-誤差 LMS:

    f(u(n),e(n),μ)=μsign(e(n))u*(n)

  • 符号-データ LMS:

    f(u(n),e(n),μ)=μe(n)sign(u(n))

    ここで u(n) は実数です。

  • 符号-符号 LMS:

    f(u(n),e(n),μ)=μsign(e(n))sign(u(n))

    ここで u(n) は実数です。

変数は次のようになります。

変数説明

n

現在の時間インデックス

u(n)

ステップ n でのバッファー済み入力サンプルのベクトル

u*(n)

ステップ n でのバッファー済み入力サンプルのベクトルの複素共役

w(n)

ステップ n でのフィルターの重み推定ベクトル

y(n)

ステップ n でのフィルター処理された出力

e(n)

ステップ n での推定誤差

d(n)

ステップ n での目的の応答

µ

適応ステップ サイズ

α漏れ係数 (0 < α ≤ 1)

ε

重みの更新時に数値が不安定になる可能性を修正する定数。

[Filter length] パラメーターを使用してフィルターの重みのベクトルの長さを指定します。

[Step size (mu)] パラメーターは、方程式の µ に対応します。正規化 LMS 方程式の収束では、0<µ<2 となります。入力端子 Step-size を使用するか、または LMS Filter ダイアログの [ブロック パラメーター] に値を入力して、ステップ サイズを指定できます。

フィルターの重みの初期値 w(0) をベクトルまたはスカラーとして [Initial value of filter weights] テキスト ボックスに入力します。スカラーを入力すると、ブロックはこのスカラー値を使ってフィルターの重みのベクトルを作成します。このベクトルの長さはフィルター長に等しく、値はすべてこのスカラー値と等しくなります。

[Adapt port] チェック ボックスをオンにすると、Adapt 端子がブロック上に表示されます。この端子への入力がゼロより大きい場合、ブロックはフィルターの重みを継続的に更新します。この端子への入力がゼロ以下の場合、フィルターの重みは現在の値を維持します。

フィルターの重み値を初期値にリセットするには、[Reset port] パラメーターを使用します。Reset 端子でリセット イベントが検出されるたびに、ブロックはフィルターの重みをリセットします。リセット信号のレートはデータ信号入力と同じレートでなければなりません。

[Reset port] リストから [None] を選択すると、Reset 端子が無効になります。Reset 端子を有効にするには、[Reset port] リストから次のいずれかを選択します。

  • Rising edge — Reset の入力が次のいずれかを行うときにリセット操作をトリガーします。

    • 負の値から正の値またはゼロに立ち上がる

    • ゼロから正の値に立ち上がる。この場合、立ち上がりは負の値からゼロへの立ち上がりと連続していません (次の図を参照)。

  • Falling edge — Reset の入力が次のいずれかを行うときにリセット操作をトリガーします。

    • 正の値から負の値またはゼロに立ち下がる

    • ゼロから負の値に立ち下がる。この場合、立ち下がりは正の値からゼロへの立ち下がりと連続していません (次の図を参照)。

  • Either edge — Reset の入力が [Rising edge] または [Falling edge] の場合、(上記で説明されるように) リセット操作をトリガーします。

  • Non-zero sample — Reset の入力が非ゼロの各サンプル時間でリセット操作をトリガーします。

ブロック上で Wts 端子を作成するには、[Output filter weights] チェック ボックスをオンにします。各反復で、ブロックはこの端子から現在の更新されたフィルターの重みを出力します。

固定小数点データ型

次の図は、固定小数点信号の LMS Filter ブロック内で使用されるデータ型を示しています。また、これらの図で使用される変数の定義は、以下の表でまとめています。

変数定義

u

入力ベクトル

W

フィルターの重みのベクトル

µ

ステップ サイズ

e

誤差

Q

商、Q=μeu'u

u'u

エネルギー計算の図における積のデータ型

アキュムレータ u'u

エネルギー計算の図におけるアキュムレータのデータ型

W'u

畳み込みの図における積のデータ型

アキュムレータ W'u

畳み込みの図におけるアキュムレータのデータ型

μe

ステップ サイズと誤差の積の図における積のデータ型

Qu

重みの更新の図における積とアキュムレータのデータ型1

1この量のアキュムレータのデータ型は、積のデータ型と同じになるように自動的に設定されます。このアキュムレータの最小、最大およびオーバーフロー情報は積の情報の一部としてログ記録されます。オートスケーリングは、この積とアキュムレータを 1 つのデータ型として扱います。

ブロック マスクのパラメーター、重み、積、商およびアキュムレータのデータ型を設定できます。このブロックの固定小数点入力、出力およびマスク パラメーターは次の特性をもたなければなりません。

  • 入力信号と目的の信号は同じ語長でなければならないが、その小数部の長さは異なってもよい。

  • ステップ サイズと漏れ係数は同じ語長でなければならないが、その小数部の長さは異なってもよい。

  • 出力信号と誤差信号は目的の信号と同じ語長と小数部の長さをもっている。

  • u'uW'uμe および Qu の演算の商と積の出力は同じ語長でなければならないが、その小数部の長さは異なってもよい。

  • u'u および W'u の演算のアキュムレータのデータ型は同じ語長でなければならないが、その小数部の長さは異なってもよい。

乗算器への入力の少なくとも 1 つが実数の場合、乗算器の出力は積の出力データ型になります。乗算器への入力が両方とも複素数の場合、乗算の結果はアキュムレータのデータ型になります。実行される複素数の乗算の詳細については、Multiplication Data Typesを参照してください。

ダイアログ ボックス

[メイン] タブ

Algorithm

フィルターの重みの計算に使用するアルゴリズムを選択します。

Filter length

FIR フィルターの重みのベクトルの長さを入力します。

Specify step size via

LMS Filter ダイアログの [ブロック パラメーター] でステップ サイズの値を入力するには、[Dialog] を選択します。Step-size 入力端子を使ってステップ サイズを指定するには、[Input port] を選択します。

Step size (mu)

ステップ サイズ μ を入力します。これは調整可能 (Simulink)です。

Leakage factor (0 to 1)

漏れ係数 0 < 1 – μα ≤ 1 を入力します。これは調整可能 (Simulink)です。

Initial value of filter weights

FIR フィルターの重みの初期値を指定します。

Adapt port

このチェック ボックスをオンにすると Adapt 入力端子が有効になります。

Reset port

このチェック ボックスをオンにすると Reset 入力端子が有効になります。

Output filter weights

Wts 端子からフィルターの重みをエクスポートするには、このチェック ボックスをオンにします。

[データ型] タブ

丸めモード

固定小数点演算の丸めモードを次のいずれかに指定します。

  • Floor

  • Ceiling

  • Convergent

  • Nearest

  • Round

  • Simplest

  • Zero

詳細については、丸めモードを参照してください。

Overflow mode

固定小数点演算のオーバーフロー モードを選択します。

Parameters

このパラメーターは、[Specify step size via] パラメーターで [Dialog] を選択すると表示されます。漏れ係数とステップ サイズの語長と小数部の長さの指定方法を選択します。

  • [Same word length as first input] を選択すると、漏れ係数とステップ サイズの語長がブロックへの最初の入力の語長と一致します。このモードでは、漏れ係数とステップ サイズの小数部の長さは 2 進小数点のみのスケーリングに自動的に設定されます。このスケーリングは、与えられた係数の値と語長で可能な限り最高の精度を提供します。

  • [Specify word length] を選択すると、漏れ係数とステップ サイズの語長をビット数で入力できます。このモードでは、漏れ係数とステップ サイズの小数部の長さは 2 進小数点のみのスケーリングに自動的に設定されます。このスケーリングは、与えられた係数の値と語長で可能な限り最高の精度を提供します。

  • [2 進小数点スケーリング] を選択すると、漏れ係数とステップ サイズの語長と小数部の長さをビット数で入力できます。漏れ係数とステップ サイズの語長は同じでなければなりませんが、小数部の長さは異なっても構いません。

  • [勾配とバイアスのスケーリング] を選択すると、漏れ係数とステップ サイズの語長 (ビット数) と勾配を入力できます。漏れ係数とステップ サイズの語長は同じでなければなりませんが、勾配は異なっても構いません。このブロックでは、勾配が 2 のべき乗で、バイアスが 0 でなければなりません。

[Specify step size via] パラメーターで [Input port] を選択する場合、漏れ係数の語長は Step size 端子でのステップ サイズ入力の語長と同じになります。漏れ係数の小数部の長さは、漏れ係数の語長に基づいて可能な限り最高の精度に自動的に設定されます。

Weights

ブロックのフィルターの重みの語長と小数部の長さを指定する方法を選択します。

  • [Same as first input] を選択すると、フィルターの重みの語長と小数部の長さがブロックへの 1 番目の入力のそれらと一致します。

  • [2 進小数点スケーリング] を選択すると、フィルターの重みの語長と小数部の長さをビット数で入力できます。

  • [勾配とバイアスのスケーリング] を選択すると、フィルターの重みの語長 (ビット数) と勾配を入力できます。このブロックでは、勾配が 2 のべき乗で、バイアスが 0 でなければなりません。

Products & quotient

u'uW'uμeQu および商 Q の語長と小数部の長さを指定する方法を選択します。ここで、u は入力ベクトル、W はフィルターの重みのベクトル、μ はステップ サイズ、e は誤差、Q は商で、次のように定義できます。Q=μeu'u

  • [Same as first input] を選択すると、これらの量の語長と小数部の長さがブロックへの 1 番目の入力のそれらと一致します。

  • [2 進小数点スケーリング] を選択すると、これらの量の語長と小数部の長さをビット数で入力できます。これらの量の語長は同じでなければなりませんが、小数部の長さは異なっても構いません。

  • [勾配とバイアスのスケーリング] を選択すると、これらの量の語長 (ビット数) と勾配を入力できます。これらの量の語長は同じでなければなりませんが、勾配は異なっても構いません。このブロックでは、勾配が 2 のべき乗で、バイアスが 0 でなければなりません。

Accumulators

このパラメーターを使用して、u'u および W'u 演算のアキュムレータの語長と小数部の長さを意図したとおり指定します。

メモ:

このパラメーターは、Qu 演算のアキュムレータの語長と小数部の長さを指定するためには使用 "しません"。この量のアキュムレータのデータ型は積のデータ型と同じになるように自動的に設定されます。このアキュムレータの最小、最大およびオーバーフロー情報は積の情報の一部としてログ記録されます。オートスケーリングは、この積とアキュムレータを 1 つのデータ型として扱います。

このブロックのアキュムレータ データ型の使い方を示す図は、固定小数点データ型およびMultiplication Data Typesを参照してください。

  • [Same as first input] を選択すると、これらの特性はブロックへの入力の特性と一致します。

  • [2 進小数点スケーリング] を選択すると、アキュムレータの語長と小数部の長さをビット数で入力できます。両方のアキュムレータの語長は同じでなければなりませんが、小数部の長さは異なっても構いません。

  • [勾配とバイアスのスケーリング] を選択すると、アキュムレータの語長 (ビット数) と勾配を入力できます。両方のアキュムレータの語長は同じでなければなりませんが、勾配は異なっても構いません。このブロックでは、勾配が 2 のべき乗で、バイアスが 0 でなければなりません。

固定小数点ツールによる変更に対してデータ型の設定をロックする

ブロック マスクで指定するデータ型が固定小数点ツールによってオーバーライドされないようにするには、このパラメーターを選択します。

参照

Hayes, M.H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.

サポートされているデータ型

端子サポートされているデータ型

入力

  • 倍精度浮動小数点

  • 単精度浮動小数点

  • 符号付き固定小数点

Desired

  • 浮動小数点信号の入力と同じでなければならない

  • 入力が固定小数点の場合、任意の符号付き固定小数点データ型でなければならない

Step-size

  • 浮動小数点信号の入力と同じでなければならない

  • 入力が固定小数点の場合、任意の符号付き固定小数点データ型でなければならない

Adapt

  • 倍精度浮動小数点

  • 単精度浮動小数点

  • boolean

  • 8、16、32 ビット符号付き整数

Reset

  • 倍精度浮動小数点

  • 単精度浮動小数点

  • boolean

  • 8、16、32 ビット符号付き整数

Output

  • 浮動小数点信号の入力と同じでなければならない

  • 固定小数点信号の Desired と同じでなければならない

Error

  • 浮動小数点信号の入力と同じでなければならない

  • 固定小数点信号の Desired と同じでなければならない

Wts

  • 浮動小数点信号の入力と同じでなければならない

  • 固定小数点信号の [Weights] パラメーターに従う

参考

LMS UpdateDSP System Toolbox
RLS FilterDSP System Toolbox
Block LMS FilterDSP System Toolbox
Fast Block LMS FilterDSP System Toolbox

関連情報については、Adaptive Filters in Simulinkを参照してください。

拡張機能

R2006a より前に導入