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

dsp.RLSFilter

再帰的最小二乗 (RLS) アルゴリズムを使用した出力、誤差および係数の計算

説明

dsp.RLSFilter System object™ は、RLS フィルターの実装を使用して入力の各チャネルをフィルター処理します。

入力の各チャネルをフィルターするには、次を実行します。

  1. dsp.RLSFilter オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とは (MATLAB)を参照してください。

作成

説明

rlsFilt = dsp.RLSFilter は適応 RLS フィルター System object、rlsFilt を返します。この System object は、RLS アルゴリズムを使用して、フィルター済み出力、フィルター誤差および指定の入力と目的の信号に対するフィルターの重みを計算します。

rlsFilt = dsp.RLSFilter(len) は RLS フィルター System object、rlsFilt を返します。この System object には、len に設定された Length プロパティがあります。

rlsFilt = dsp.RLSFilter(Name,Value) は、指定した各プロパティが指定の値に設定された RLS フィルター System object を返します。各プロパティを、一重引用符で囲みます。指定していないプロパティは既定値になります。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計 (MATLAB)を参照してください。

フィルターの係数の計算に使用するメソッドを、Conventional RLS [1] [2]Householder RLS [3] [4]Sliding-window RLS [5][1][2]Householder sliding-window RLS [4]、または QR decomposition [1] [2] として指定できます。このプロパティは調整不可能です。

RLS フィルターの係数ベクトルの長さを、スカラーの正の整数値として指定します。このプロパティは調整不可能です。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

スライディング ウィンドウの幅を Length プロパティ値以上のスカラーの正の整数値として指定します。このプロパティは調整不可能です。

依存関係

このプロパティは、Method プロパティを Sliding-window RLS または Householder sliding-window RLS に設定した場合にのみ適用されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

RLS 忘却係数を 1 以下の正のスカラー数値として指定します。このプロパティ値を 1 に設定することは無限メモリを意味し、その間は新しいフィルターを求めて適応を行います。

調整可能: Yes

データ型: single | double

FIR 適応フィルター係数の初期値をスカラーまたは Length プロパティ値に等しい長さのベクトルとして指定します。

調整可能: Yes

データ型: single | double

入力信号の逆共分散行列の初期値を指定します。このプロパティは、各次元が Length プロパティ値と等しいスカラーまたは正方行列でなければなりません。スカラー値を設定すると、InverseCovariance プロパティはそのスカラー値と等しい対角要素をもつ対角行列に初期化されます。

調整可能: Yes

依存関係

このプロパティは、Method プロパティを Conventional RLS または Sliding-window RLS に設定した場合にのみ適用されます。

データ型: single | double

入力信号の平方根逆共分散行列の初期値を指定します。このプロパティは、各次元が Length プロパティ値と等しいスカラーまたは正方行列でなければなりません。スカラー値を設定すると、SquareRootInverseCovariance プロパティはそのスカラー値と等しい対角要素をもつ対角行列に初期化されます。

調整可能: Yes

依存関係

このプロパティは、Method プロパティを Householder RLS または Householder sliding-window RLS に設定した場合にのみ適用されます。

データ型: single | double

入力信号の平方根共分散行列の初期値を指定します。このプロパティは、各次元が Length プロパティ値と等しいスカラーまたは正方行列でなければなりません。スカラー値を設定すると、SquareRootCovariance プロパティはそのスカラー値と等しい対角要素をもつ対角行列に初期化されます。

調整可能: Yes

依存関係

このプロパティは、Method プロパティを QR-decomposition RLS に設定した場合にのみ適用されます。

データ型: single | double

フィルター係数値をロックするかどうかを指定します。このプロパティを true に設定すると、フィルター係数は更新されず、値はそのままになります。既定値は false (フィルター係数が継続的に更新される) です。

調整可能: Yes

使用法

R2016b より前のバージョンでは、関数 step を使用して System object アルゴリズムを実行します。step に対する引数は作成したオブジェクトであり、この節で示す引数が次に続きます。

たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

説明

y = rlsFilt(x,d) は、System object の rlsFilt を使用して、目的の信号 d に一致するように基準入力 x を再帰的に調整します。目的の信号 d は、望ましい信号に望ましくないノイズが加わったものです。

[y,e] = rlsFilt(x,d) は、基準入力と目的の信号間で、RLS フィルターの出力を誤差 e に沿って表示します。フィルターは、誤差 e が最小になるまでその係数を調整します。オブジェクトの Coefficients プロパティにアクセスすることで、これらの係数にアクセスできます。これは、オブジェクトを呼び出した後でのみ実行できます。たとえば、rlsFilt フィルターの最適化された係数にアクセスするには、入力と目的の信号をオブジェクトに渡した後で、rlsFilt.Coefficients を呼び出します。

入力引数

すべて展開する

RLS フィルターでフィルター処理される信号。入力 x と目的の信号 d はサイズとデータ型が同じでなければなりません。

入力は可変サイズ信号にすることができます。オブジェクトがロックされていても、列ベクトルの要素数を変更できます。System object はオブジェクトを呼び出してそのアルゴリズムを実行するときにロックします。

データ型: single | double
複素数のサポート: あり

RLS フィルターはその係数を調整して誤差 e を最小化し、入力信号 x を目的の信号 d に可能な限り近づけて収束させます。

入力 x と目的の信号 d はサイズとデータ型が同じでなければなりません。

目的の信号 d は可変サイズ信号にすることができます。オブジェクトがロックされていても、列ベクトルの要素数を変更できます。System object はオブジェクトを呼び出してそのアルゴリズムを実行するときにロックします。

データ型: single | double
複素数のサポート: あり

出力引数

すべて展開する

フィルター処理された出力。スカラーまたは列ベクトルとして返されます。オブジェクトはそのフィルターの係数を調整して入力信号 x が目的の信号 d に一致するように収束させます。フィルターは収束した信号を出力します。

データ型: single | double
複素数のサポート: あり

出力信号 y と目的の信号 d の差異。スカラーまたは列ベクトルとして返されます。RLS フィルターの目的は、この誤差を最小化することです。オブジェクトはその係数を調整して収束させ、目的の信号とよく一致する出力信号を生成する最適なフィルターの係数になるようにします。e が計算される方法の詳細については、アルゴリズムを参照してください。RLS フィルター係数にアクセスするには、入力信号と目的の信号をオブジェクトに渡した後で rlsFilt.Coefficients を呼び出します。

データ型: single | double
複素数のサポート: あり

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

msesimEstimated mean squared error for adaptive filters
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて展開する

RLS フィルターの System object™ を使用して信号値を特定します。

メモ: R2016a 以前のリリースを使用している場合、それぞれのオブジェクトの呼び出しを等価な step 構文で置き換えてください。たとえば、obj(x)step(obj,x) になります。

rls1 = dsp.RLSFilter(11, 'ForgettingFactor', 0.98);
filt = dsp.FIRFilter('Numerator',fir1(10, .25)); % Unknown System
x = randn(1000,1);                       % input signal
d = filt(x) + 0.01*randn(1000,1); % desired signal
[y,e] = rls1(x, d);
w = rls1.Coefficients;
subplot(2,1,1), plot(1:1000, [d,y,e]);
title('System Identification of an FIR filter');
legend('Desired', 'Output', 'Error');
xlabel('time index'); ylabel('signal value');
subplot(2,1,2); stem([filt.Numerator; w].');
legend('Actual','Estimated');
xlabel('coefficient #'); ylabel('coefficient value');

ノイズ キャンセリング

rls2 = dsp.RLSFilter('Length', 11, 'Method', 'Householder RLS');
filt2 = dsp.FIRFilter('Numerator',fir1(10, [.5, .75]));
x = randn(1000,1);                           % Noise
d = filt2(x) + sin(0:.05:49.95)';     % Noise + Signal
[y, err] = rls2(x, d);
subplot(2,1,1), plot(d), title('Noise + Signal');
subplot(2,1,2), plot(err), title('Signal');

アルゴリズム

dsp.RLSFilter System object は、Conventional RLS が選択されると、FIR フィルターの重みの最小二乗推定 (RLS) を再帰的に計算します。System object は、入力信号と目的の信号に変換するために必要なフィルターの重みまたは係数を推定します。入力信号はスカラーまたは列ベクトルにすることができます。目的の信号は入力信号と同じデータ型、実数/複素数および次元をもたなければなりません。対応する RLS フィルターは、行列形式の P(n) として表現されます。

k(n)=λ1P(n1)u(n)1+λ1uH(n)P(n1)u(n)y(n)=wT(n1)u(n)e(n)=d(n)y(n)w(n)=w(n1)+k(n)e(n)P(n)=λ1P(n1)λ1k(n)uH(n)P(n1)

ここで、λ-1 は指数的な重み係数の逆数を示します。変数は次のようになります。

変数説明
n現在の時間インデックス
u(n)ステップ n でのバッファー済み入力サンプルのベクトル
P(n)ステップ n での逆相関行列
k(n)ステップ n でのゲイン ベクトル
w(n)ステップ n でのフィルター タップの推定ベクトル
y(n)ステップ n でのフィルター処理された出力
e(n)ステップ n での推定誤差
d(n)ステップ n での目的の応答
λ忘却係数

uw、および k はすべて列ベクトルです。

参照

[1] M Hayes, Statistical Digital Signal Processing and Modeling, New York: Wiley, 1996.

[2] S. Haykin, Adaptive Filter Theory, 4th Edition, Upper Saddle River, NJ: Prentice Hall, 2002 .

[3] A.A. Rontogiannis and S. Theodoridis, "Inverse factorization adaptive least-squares algorithms," Signal Processing, vol. 52, no. 1, pp. 35-47, July 1996.

[4] S.C. Douglas, "Numerically-robust O(N2) RLS algorithms using least-squares prewhitening," Proc. IEEE Int. Conf. on Acoustics, Speech, and Signal Processing, Istanbul, Turkey, vol. I, pp. 412-415, June 2000.

[5] A. H. Sayed, Fundamentals of Adaptive Filtering, Hoboken, NJ: John Wiley & Sons, 2003.

拡張機能

R2013a で導入