Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

適応フィルターの収束

この例では、さまざまな LMS アルゴリズムを使用して、適応フィルターの収束速度を比較します。

はじめに

適応フィルターは、その出力が目的とする未知のシステムの出力と一致するように、自身のフィルターの係数を適応させます。適応フィルターの主な用途はフィルターの識別ですが、その場合、ここで示すように未知の畳み込みフィルターによって基準信号がフィルター処理されます。同じ信号が適応フィルターと未知のシステムを通過すると、適応フィルターは 2 つの出力間の誤差が最小になるように自身の係数を調整します。通常、最初のうちは適応フィルターの出力に対する誤差が大きいですが、フィルターの収束に従って誤差は時間とともに小さくなる傾向があります。

最小平均二乗 (LMS) アルゴリズムを使用する適応フィルターは、2 つの出力間の誤差が最小二乗的に最も小さくなるように自身の係数を調整します。この例では、LMS アルゴリズムの 4 つのバリアントを検討し、これらのアルゴリズムを使用して適応フィルターの収束速度を比較します。

  • LMS - 最小平均二乗アルゴリズム

  • NLMS - 正規化 LMS アルゴリズム

  • SELMS - 符号-誤差 LMS アルゴリズム

  • SSLMS - 符号-符号 LMS アルゴリズム

設定

フィルターに対する入力信号として、分散 0.01 でゼロ平均のホワイト ガウス ノイズを使用します。目的とする未知のフィルターとして、すべての係数が 1 に設定された、長さ 13 の FIR フィルターを選択します。オプションで、Manual Switch を切り替えて、分散 1e-5 のガウス ノイズをこれらの重みに追加することができます。ここでは、重みにノイズが入らないようにするため、値 0 の Constant ブロック側にスイッチを切り替えます。適応フィルターの初期の重みを 0 に設定します。LMS、NLMS および Sign-Error LMS の各ブロックのステップ サイズを 0.2 とします。Sign-Sign LMS アルゴリズムには、より適したステップ サイズである 0.02 を選択します。適応フィルターは個別に有効または無効にすることができます。Moving RMS ブロックを使用して、目的の出力のエネルギーおよび誤差信号を計算します。Time Scope 上にこれらの信号を dB スケールで可視化します。適応フィルターの重みの収束を確認するには、目的とするフィルターの重みから適応フィルターの重みを減算し、別の Time Scope を使用して誤差をプロットします。

最初のプロットから、NLMS フィルターからの誤差信号は、300 dB を超える定常偏差で他のバリアントの誤差信号バリアントよりはるかに速くゼロに収束することがわかります。また、LMS フィルターも、150 dB を超える SNR では未知のフィルターの出力とよく一致しています。2 番目のプロットからは、NLMS フィルターと LMS フィルターの重みが目的となるフィルターの重みに収束し、重み間の最終的な誤差が最小になることもわかります。Sign-Error LMS フィルターと Sign-Sign LMS フィルターでは、初めは LMS フィルターより早く収束が始まっているようですが、フィルター出力 (約 20 dB の SNR) とフィルターの重みに LMS フィルターより大きな定常偏差があります。

関連するトピック