このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
正規化 LMS アルゴリズムの使用による FIR フィルターのシステム同定
LMS アルゴリズムの収束性能を向上するために、正規化されたバリアント (NLMS) は信号強度に基づいて適応ステップ サイズを使用します。入力信号強度が変化すると、アルゴリズムによって入力強度が計算され、適切な値を維持するようにステップ サイズが調整されます。ステップ サイズは時間と共に変化するため、正規化アルゴリズムは多くの場合、少ないサンプル数でより迅速に収束します。時間と共に緩やかに変化する入力信号の場合、正規化 LMS アルゴリズムがより効率的な LMS の手法となります。
LMS のアプローチを使用する例については、LMS アルゴリズムの使用による FIR フィルターのシステム同定を参照してください。
未知のシステム
同定対象のシステムを表す dsp.FIRFilter
オブジェクトを作成します。関数 fircband
を使用して、フィルターの係数を設計します。設計するフィルターは、阻止帯域で 0.2 リップルに制約されているローパス フィルターです。
filt = dsp.FIRFilter; filt.Numerator = fircband(12,[0 0.4 0.5 1],[1 1 0 0],[1 0.2],... {'w' 'c'});
信号 x
を FIR フィルターに渡します。目的の信号 d
は、未知のシステム (FIR フィルター) の出力と加法性ノイズ信号 n
の和です。
x = 0.1*randn(1000,1); n = 0.001*randn(1000,1); d = filt(x) + n;
適応フィルター
正規化された LMS アルゴリズムのバリエーションを使用するには、dsp.LMSFilter
の Method
プロパティを 'Normalized LMS'
に設定します。適応フィルターの長さを 13 タップ、ステップ サイズを 0.2 に設定します。
mu = 0.2; lms = dsp.LMSFilter(13,'StepSize',mu,'Method',... 'Normalized LMS');
一次入力信号 x
と目的の信号 d
を LMS フィルターに渡します。
[y,e,w] = lms(x,d);
適応フィルターの出力 y
は目的の信号 d に収束された信号であり、2 つの信号間の誤差 e
を最小化します。
plot(1:1000, [d,y,e]) title('System Identification by Normalized LMS Algorithm') legend('Desired','Output','Error') xlabel('Time index') ylabel('Signal value')
適応させたフィルターと未知のシステムとの比較
重みベクトル w は、未知のシステム (FIR フィルター) に似るように適応させた LMS フィルターの係数を表します。収束を確認するために、FIR フィルターの分子係数と適応フィルターの推定された重み付けを比較します。
stem([(filt.Numerator).' w]) title('System Identification by Normalized LMS Algorithm') legend('Actual filter weights','Estimated filter weights',... 'Location','NorthEast')
参考
オブジェクト
関連するトピック
参照
[1] Hayes, Monson H., Statistical Digital Signal Processing and Modeling. Hoboken, NJ: John Wiley & Sons, 1996, pp.493–552.
[2] Haykin, Simon, Adaptive Filter Theory. Upper Saddle River, NJ: Prentice-Hall, Inc., 1996.