このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
LMS Filter
LMS 適応アルゴリズムを使用した出力、誤差および重みの計算

ライブラリ:
DSP System Toolbox /
Filtering /
Adaptive Filters
DSP System Toolbox HDL Support /
Filtering
説明
LMS Filter ブロックは、5 つの異なるアルゴリズムを使用して適応 FIR フィルターを実装することができます。ブロックは、出力信号 y(n) と目的の信号 d(n) の間で誤差 e(n) を最小化するために必要なフィルターの重みまたは係数を推定します。出力はフィルター処理された入力信号です。これが目的の信号の推定になります。Error 端子は目的の信号から出力信号を差し引いた結果を出力します。
このブロックは、特定の状況下で SIMD コード生成もサポートします。詳細は、コード生成を参照してください。
例
端子
入力
Input — 入力信号
スカラー | ベクトル
フィルター処理する信号を接続します。スカラーまたは列ベクトルとして指定します。
入力が固定小数点の場合、符号付きでなければなりません。
[アルゴリズム] パラメーターを [Sign—Error LMS]
、[Sign—Data LMS]
または [Sign—Sign LMS]
に設定した場合、[Input] 端子経由のデータ入力は実数でなければなりません。
データ型: single
| double
| fixed point
Desired — 目的の信号
ベクトル | 行列
目的の信号を接続します。ベクトルまたは行列として指定します。目的の信号は Input
信号と同じデータ型、実数/複素数および次元をもたなければなりません。
[Input] が固定小数点の場合、目的の信号は符号付き固定小数点でなければなりません。
[アルゴリズム] パラメーターを [Sign—Error LMS]
、[Sign—Data LMS]
または [Sign—Sign LMS]
に設定した場合、[Desired] 端子経由のデータ入力は実数でなければなりません。
データ型: single
| double
| fixed point
Step-size — Step-size
スカラー
ステップ サイズ μ を入力します。正規化 LMS 方程式の収束では、0<µ<2 となります。入力の型は Input
端子の型と一致しなければなりません。
[Input] が固定小数点の場合、ステップサイズは符号付き固定小数点でなければなりません。
依存関係
この端子は Specify step size via
パラメーターを [Input port]
に設定する場合にのみ表示されます。
データ型: single
| double
| fixed point
Adapt — フィルターの重みの更新
スカラー | ベクトル
この端子への入力がゼロより大きい場合、ブロックはフィルターの重みを継続的に更新します。この端子への入力がゼロ以下の場合、フィルターの重みは現在の値を維持します。
依存関係
この端子は Adapt port
パラメーターを [on]
に設定する場合にのみ表示されます。
データ型: single
| double
| int8
| int16
| int32
| Boolean
Reset — フィルターの重みのリセット
スカラー | ベクトル
フィルターの重み値を初期値にリセットする信号。ベクトルとして指定します。Reset 端子でリセット イベントが検出されるたびに、ブロックはフィルターの重みをリセットします。リセット信号のレートはデータ信号入力と同じレートでなければなりません。
リセット イベントのタイプについては、Reset
パラメーターを参照してください。
依存関係
この端子は、[Reset port] パラメーターを [Rising edge]
、[Falling edge]
、[Either edge]
または [Non-zero sample]
に設定する場合にのみ表示されます。
データ型: single
| double
| int8
| int16
| int32
| Boolean
出力
Output — 出力信号
スカラー | ベクトル
フィルター処理された入力信号を出力します。これが目的の信号の推定になります。入力信号と同じサイズ、同じ実数/複素数となります。
出力信号のデータ型は、目的の信号のデータ型と同じです。
データ型: single
| double
| fixed point
Error — 出力信号と目的の信号の誤差
スカラー | ベクトル
目的の信号から出力信号を差し引いた結果を出力します。
誤差信号のデータ型は、目的の信号のデータ型と同じです。
データ型: single
| double
| fixed point
Wts — 更新されたフィルターの重み
スカラー | ベクトル
各反復で、ブロックはこの端子から現在の更新されたフィルターの重みを出力します。
重みのデータ型は、浮動小数点信号の Input
端子の型と一致しなければなりません。固定小数点信号の Weights
パラメーターに従います。
依存関係
この端子は Output filter weights
パラメーターを [On]
に設定する場合にのみ表示されます。
データ型: single
| double
| fixed point
パラメーター
[メイン] タブ
Algorithm — アルゴリズムの選択
LMS
(既定値) | Normalized LMS
| Sign-Error LMS
| Sign-Data LMS
| Sign-Sign LMS
フィルターの重みの計算に使用するアルゴリズムを選択します。
Filter length — Filter length
32
(既定値) | スカラー
FIR フィルターの重みのベクトルの長さを入力します。
Specify step size via — ステップ サイズの指定
Dialog
(既定値) | Input port
Step size (mu) — ステップ サイズ
0.1
(既定値) | 正のスカラー
ステップ サイズ μ を入力します。正規化 LMS 方程式の収束では、0<µ<2 となります。
調整可能: Yes
依存関係
このパラメーターは、Specify step size via
パラメーターを [Dialog]
に設定した場合にのみ表示されます。
Leakage factor (0 to 1) — 漏れ係数
1.0
(既定値) | スカラー
漏れ係数 0 < 1 – μα ≤ 1 を入力します。
調整可能: Yes
Initial value of filter weights — フィルターの重みの初期値
0
(既定値) | ベクトル | スカラー
フィルターの重みの初期値 w(0) をベクトルまたはスカラーとして入力します。スカラーを入力すると、ブロックはこのスカラー値を使ってフィルターの重みのベクトルを作成します。このベクトルの長さはフィルター長に等しく、値はすべてこのスカラー値と等しくなります。
Adapt port — Adapt 端子を有効にする
on
(既定値) | off
このチェック ボックスをオンにすると Adapt
入力端子が有効になります。
Reset port — リセット端子
None
(既定値) | Rising edge
| Falling edge
| Either edge
| Non-zero sample
フィルターの重み値を初期値にリセットするには、[Reset port] パラメーターを使用します。リセット信号はデータ信号入力と同じレートでなければなりません。
[None]
を選択して Reset
端子を無効にします。[Reset] 端子を有効にするには、リストから次のいずれかを選択します。
Rising edge
— [Reset] の入力が次のいずれかを行うときにリセット操作をトリガーします。負の値から正の値またはゼロに立ち上がる
ゼロから正の値に立ち上がる。この場合、立ち上がりは負の値からゼロへの立ち上がりと連続していません (次の図を参照)。
Falling edge
— [Reset] の入力が次のいずれかを行うときにリセット操作をトリガーします。正の値から負の値またはゼロに立ち下がる
ゼロから負の値に立ち下がる。この場合、立ち下がりは正の値からゼロへの立ち下がりと連続していません (次の図を参照)。
Either edge
— [Reset] の入力が[Rising edge]
または[Falling edge]
の場合、リセット操作をトリガーします。Non-zero sample
— Reset の入力が非ゼロの各サンプル時間でリセット操作をトリガーします。
Output filter weights — フィルターの重みの出力
on
(既定値) | off
[Output filter weights] パラメーターを選択して Wts
端子からフィルターの重みをエクスポートします。各反復で、ブロックはこの端子から現在の更新されたフィルターの重みを出力します。
[データ型] タブ
丸めモード — 丸め演算の方法
Floor
(既定値) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
整数オーバーフローで飽和 — オーバーフロー アクションの方法
off (既定値) | on
このパラメーターをオンにすると、ブロックは固定小数点演算の結果を飽和させます。このパラメーターをオフにすると、ブロックは固定小数点演算の結果をラップします。saturate
および wrap
の詳細については、固定小数点演算のオーバーフロー モードを参照してください。
Parameters — パラメーター
Same word length as first input
(既定値) | Specify word length
| Binary point scaling
漏れ係数とステップ サイズの語長と小数部の長さの指定方法を選択します。
Same word length as first input
–– 漏れ係数とステップ サイズの語長がブロックへの最初の入力の語長と一致します。このモードでは、漏れ係数とステップ サイズの小数部の長さは 2 進小数点のみのスケーリングに自動的に設定されます。このスケーリングは、与えられた係数の値と語長で可能な限り最高の精度を提供します。Specify word length
–– 漏れ係数とステップ サイズの語長をビット数で入力できます。このモードでは、漏れ係数とステップ サイズの小数部の長さは 2 進小数点のみのスケーリングに自動的に設定されます。このスケーリングは、与えられた係数の値と語長で可能な限り最高の精度を提供します。Binary point scaling
–– 漏れ係数とステップ サイズの語長と小数部の長さをビット数で入力できます。漏れ係数とステップ サイズの語長は同じでなければなりませんが、小数部の長さは異なっても構いません。
Specify step size via
パラメーターで [Input port]
を選択する場合、漏れ係数の語長は Step-size
端子でのステップ サイズ入力の語長と同じになります。漏れ係数の小数部の長さは、漏れ係数の語長に基づいて可能な限り最高の精度に自動的に設定されます。
依存関係
このパラメーターは、[Specify step size via] パラメーターを [Dialog]
に設定した場合にのみ表示されます。
Weights — フィルターの重みの語長と小数部の長さ
Same as first input
(既定値) | Binary point scaling
ブロックのフィルターの重みの語長と小数部の長さを指定する方法を選択します。
Same as first input
–– フィルターの重みの語長と小数部の長さがブロックへの 1 番目の入力のそれらと一致します。Binary point scaling
–– フィルターの重みの語長と小数部の長さをビット数で入力できます。
Product and quotient — 積と商の語長と小数部の長さ
Same as first input
(既定値) | Binary point scaling
u'u、W'u、、 および商 Q の語長と小数部の長さを指定する方法を選択します。ここで、u は入力ベクトル、W はフィルターの重みのベクトル、μ はステップ サイズ、e は誤差、Q は商で、次のように定義できます。
Same as first input
–– これらの量の語長と小数部の長さがブロックへの 1 番目の入力のそれらと一致します。Binary point scaling
–– これらの量の語長と小数部の長さをビット数で入力できます。これらの量の語長は同じでなければなりませんが、小数部の長さは異なっても構いません。
Accumulator — アキュムレータの語長と小数部の長さ
Same as first input
(既定値) | Binary point scaling
このパラメーターを使用して、u'u および W'u 演算のアキュムレータの語長と小数部の長さの指定方法を指定します。
メモ
このパラメーターは、 演算のアキュムレータの語長と小数部の長さを指定するためには使用しません。この量のアキュムレータのデータ型は積のデータ型と同じになるように自動的に設定されます。このアキュムレータの最小、最大およびオーバーフロー情報は積の情報の一部としてログ記録されます。オートスケーリングは、この積とアキュムレータを 1 つのデータ型として扱います。
Same as first input
–– これらの特性はブロックへの入力の特性と一致します。Binary point scaling
–– アキュムレータの語長と小数部の長さをビット数で入力できます。両方のアキュムレータの語長は同じでなければなりませんが、小数部の長さは異なっても構いません。
固定小数点ツールによる変更に対してデータ型の設定をロックする — 固定小数点ツールによるデータ型のオーバーライドの回避
off
(既定値) | on
ブロック ダイアログ ボックスで指定するデータ型が固定小数点ツールによってオーバーライドされないようにするには、このパラメーターを選択します。
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
詳細
LMS Filter のアルゴリズム
Algorithm
パラメーターに [LMS]
を選択すると、ブロックは最小平均二乗 (LMS) アルゴリズムを使ってフィルターの重みを計算します。このアルゴリズムは、次の方程式で定義されます。
このブロックで使用できる各種の LMS 適応フィルター アルゴリズムは、以下のように定義されます。
LMS ––
正規化された LMS ––
正規化された LMS では、重みの更新時に数値が不安定になる可能性を克服するため、小さい正の定数 ε が分母に追加されました。倍精度浮動小数点入力の場合、ε は関数
eps
の出力です。単精度浮動小数点入力の場合、ε はeps("single")
の出力です。固定小数点入力の場合、ε は 0 です。符号-誤差 LMS ––
符号-データ LMS ––
ここで u(n) は実数です。
符号-符号 LMS ––
ここで u(n) は実数です。
変数 | 説明 |
---|---|
n | 現在の時間インデックス |
u(n) | ステップ n でのバッファー済み入力サンプルのベクトル |
u*(n) | ステップ n でのバッファー済み入力サンプルのベクトルの複素共役 |
w(n) | ステップ n でのフィルターの重み推定ベクトル |
y(n) | ステップ n でのフィルター処理された出力 |
e(n) | ステップ n での推定誤差 |
d(n) | ステップ n での目的の応答 |
µ | 適応ステップ サイズ |
α | 漏れ係数 (0 < α ≤ 1) |
ε | 重みの更新時に数値が不安定になる可能性を修正する定数。 |
参照
[1] Hayes, M.H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
生成されたコードは特定の条件下で関数 memcpy
または関数 memset
(string.h
) に依存します。
LMS Filter ブロックは、次の条件を満たす場合、Intel AVX2 テクノロジーを使用して SIMD コード生成をサポートします。
そのブロックの [Algorithm] が
[LMS]
または[Normalized LMS]
に設定されている。入力信号が実数値である。
入力信号のデータ型が
single
またはdouble
である。
SIMD テクノロジーにより、生成コードのパフォーマンスが大幅に向上します。
HDL コード生成
HDL Coder™ を使用して FPGA 設計および ASIC 設計のための Verilog および VHDL のコードを生成します。
HDL Coder™ は、HDL の実装および合成ロジックに影響を与える、追加の構成オプションを提供します。
既定では、LMS フィルターの実装ではフィルターの FIR セクションについて線形和が使用されます。
次の場合、LMS フィルターはツリー和を実装します (クリティカル パスが短くなります)。
実数データで LMS フィルターを使用している。
アキュムレータの W'u のデータ型の語長が積の W'u のデータ型の語長より
ceil(log2(filter length))
ビット以上長い。アキュムレータの W'u のデータ型と積の W'u のデータ型で小数部の長さが等しい。
ConstrainedOutputPipeline | 設計内で既存の遅延を移動することによって出力に配置するレジスタの数。分散型パイプラインは、これらのレジスタを再分散しません。既定の設定は |
InputPipeline | 生成コードに挿入する入力パイプライン ステージの数。分散型パイプラインと制約付き出力パイプラインは、これらのレジスタを移動できます。既定の設定は |
OutputPipeline | 生成コードに挿入する出力パイプライン ステージの数。分散型パイプラインと制約付き出力パイプラインは、これらのレジスタを移動できます。既定の設定は |
このブロックは、複素信号に対するコード生成をサポートします。
HDL Coder は、LMS フィルターの
[正規化 LMS]
アルゴリズムをサポートしていません。Reset
端子は、Boolean
とunsigned
の入力のみをサポートします。Adapt
端子は、Boolean
の入力のみをサポートします。[フィルター長] は 2 以上でなければなりません。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
入力が固定小数点の場合、勾配が 2 のべき乗でバイアスが 0 の符号付き整数または符号付き固定小数点でなければなりません。
固定小数点データ型
次の図は、LMS Filter ブロック内で固定小数点信号に使用されるデータ型を示します。次の表は図で使用されている変数の定義をまとめています。
変数 | 定義 |
---|---|
u | 入力ベクトル |
W | フィルターの重みのベクトル |
µ | ステップ サイズ |
e | エラー |
Q | 商、 |
積 u'u | エネルギー計算の図における積のデータ型 |
アキュムレータ u'u | エネルギー計算の図におけるアキュムレータのデータ型 |
積 W'u | 畳み込みの図における積のデータ型 |
アキュムレータ W'u | 畳み込みの図におけるアキュムレータのデータ型 |
積 | ステップ サイズと誤差の積の図における積のデータ型 |
積 | 重みの更新の図における積とアキュムレータのデータ型1 |
1この量のアキュムレータのデータ型は、積のデータ型と同じになるように自動的に設定されます。このアキュムレータの最小、最大およびオーバーフロー情報は積の情報の一部としてログ記録されます。オートスケーリングは、この積とアキュムレータを 1 つのデータ型として扱います。
ブロック マスクのパラメーター、重み、積、商およびアキュムレータのデータ型を設定できます。このブロックの固定小数点入力、出力およびマスク パラメーターは次の特性をもたなければなりません。
入力信号と目的の信号は同じ語長でなければならないが、その小数部の長さは異なってもよい。
ステップ サイズと漏れ係数は同じ語長でなければならないが、その小数部の長さは異なってもよい。
出力信号と誤差信号は目的の信号と同じ語長と小数部の長さをもっている。
u'u、W'u、 および の演算の商と積の出力は同じ語長でなければならないが、その小数部の長さは異なってもよい。
u'u および W'u の演算のアキュムレータのデータ型は同じ語長でなければならないが、その小数部の長さは異なってもよい。
乗算器への入力の少なくとも 1 つが実数の場合、乗算器の出力は積の出力データ型になります。乗算器への入力が両方とも複素数の場合、乗算の結果はアキュムレータのデータ型になります。詳細は、乗算のデータ型を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)