Main Content

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

RLS アルゴリズムを使用した逆システム同定

この例では、次に示す逆システム同定モデルを使用して、RLS 適応アルゴリズムの例を示します。

適応フィルターを未知のフィルターとカスケード接続すると、未知のシステムの逆数である解に適応フィルターが収束します。

未知のシステムと適応フィルターの伝達関数がそれぞれ H(z) および G(z) である場合、カスケード接続されたシステムからの信号と目的の信号の間で測定される誤差は、G(z)×H(z) = 1 になるときに最小になります。この関係が成り立つには、G(z) が 1/H(z) (未知のシステムの伝達関数の逆数) に等しくなければなりません。

これが正しいことを示すため、カスケード接続されたフィルター ペアに入力する信号 s を作成します。

s = randn(3000,1);

カスケード接続されたフィルターの場合、未知のフィルターにより、両方のフィルターの後の総和点に到達する信号に遅延が発生します。まだ参照していない信号に適応フィルターが適応しようとすることを防ぐため (未来を予測することと同じです)、目的の信号を 12 サンプル遅延させます (12 は未知のシステムの次数)。

一般に、同定しようとしているシステムの次数は不明です。このような場合、適応フィルターの次数の半分に等しいサンプル数だけ目的の信号を遅延させます。入力を遅延させるには、値がゼロの 12 サンプルを入力 s に先行させる必要があります。

delay = zeros(12,1);
d = [delay; s(1:2988)]; % Concatenate the delay and the signal.

目的の信号ベクトル dx は同じ長さでなければならないので、遅延サンプルに対応するように信号要素数を調整します。

すべての場合に当てはまるわけではありませんが、この例では未知のフィルターの次数がわかっているので、未知のフィルターの次数に等しい遅延を追加します。

未知のシステムには、12 次のローパス FIR フィルターを使用します。

filt = dsp.FIRFilter;
filt.Numerator = designLowpassFIR(FilterOrder=12,CutoffFrequency=0.55);

s にフィルターを適用して、適応アルゴリズム関数の入力データ信号を与えます。

x = filt(s);

RLS アルゴリズムを使用するには、dsp.RLSFilter オブジェクトを作成し、その LengthForgettingFactor、および InitialInverseCovariance プロパティを設定します。

RLS アルゴリズムのオブジェクトを準備するための入力条件の詳細については、dsp.RLSFilterを参照してください。

p0 = 2 * eye(13);
lambda = 0.99;
rls = dsp.RLSFilter(13,'ForgettingFactor',lambda,...
   'InitialInverseCovariance',p0);

この例では逆数の解を求めようとしているので、データを搬送する信号と目的の信号がどれであるかに注意する必要があります。

前の適応フィルターの例では、フィルターを適用したノイズを目的の信号として使用しました。このケースでは、フィルターを適用したノイズ (x) は未知のシステムの情報を搬送します。分散が 1 のガウス分布に従う、フィルターを適用しないノイズ d が目的の信号です。この適応フィルターを実行するコードは、次のようになります。

[y,e] = rls(x,d);

y には、フィルターを適用した出力が返されます。e には、未知のシステムの逆数を求めるためにフィルターが適応するときの誤差信号が格納されます。

RLS フィルターの推定係数を取得します。

b = rls.Coefficients;

freqz を使用して、適応させた RLS フィルター (逆システム、G(z)) の周波数応答を表示します。逆システムは、線形位相をもつハイパス フィルターと同じように見えます。

freqz(b,1)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

未知のシステム H(z) の周波数応答を表示します。この応答は、カットオフ周波数が 0.55 であるローパス フィルターのものです。

freqz(filt.Numerator,1)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

未知のシステムと適応させたフィルターをカスケード接続すると、カットオフ周波数が 0.8 に拡張された補正システムになります。

overallCoeffs = conv(filt.Numerator,b);
freqz(overallCoeffs,1)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Normalized Frequency (\times\pi rad/sample), ylabel Magnitude (dB) contains an object of type line.

参考

オブジェクト

関連するトピック

参照

[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.