rarx
(削除予定) ARX または AR モデルのパラメーターを再帰的に推定する
メモ
rarx
は将来のリリースで削除される予定です。代わりに recursiveAR
または recursiveARX
を使用してください。
構文
thm = rarx(z,nn,adm,adg)
[thm,yhat,P,phi] = rarx(z,nn,adm,adg,th0,P0,phi0)
説明
thm = rarx(z,nn,adm,adg)
は、adm
および adg
で指定したアルゴリズムを使用して、入出力データ z
およびモデル次数 nn
から単出力 ARX モデルのパラメーター thm
を推定します。z
が時系列 y
であり、nn = na
の場合、rarx
は単出力 AR モデルのパラメーターを推定します。
[thm,yhat,P,phi] = rarx(z,nn,adm,adg,th0,P0,phi0)
は、adm
および adg
で指定したアルゴリズムを使用して、入出力データ z
およびモデル次数 nn
から単出力 ARX モデルのパラメーター thm
、予測出力 yhat
、パラメーター P
のスケーリングされた共分散行列の最終値、およびデータ ベクトル phi
の最終値を推定します。z
が時系列 y
であり、nn = na
の場合、rarx
は単出力 AR モデルのパラメーターを推定します。
入力引数
z
入出力データを表す
iddata
行列オブジェクトの名前または行列z = [y u]
(y
およびu
は列ベクトル)。多入力モデルでは、
u
行列には列ベクトルとして各入力が含まれます。u = [u1 ... unu]
nn
入出力モデルでは、ARX モデルの構造を以下のように指定します。
nn = [na nb nk]
ここで、
na
およびnb
は ARX モデルの次数、nk
は遅延です。多入力モデルでは、
nb
およびnk
は、各入力の次数および遅延を定義する行ベクトルです。時系列モデルでは、
nn = na
です。ここで、na
は AR モデルの次数です。メモ
遅延
nk
は0
より大きくなくてはなりません。nk = 0
にする場合は、入力シーケンスを適切にシフトし、nk = 1
を使用します (nkshift
を参照)。adm
およびadg
adm = 'ff'
およびadg
=lam
は、忘却係数 λ=lam
を使用する "忘却係数" アルゴリズムを指定します。このアルゴリズムは、再帰的最小二乗 (RLS) とも呼ばれます。この場合、行列P
の解釈は以下のようになります。R2/2
*P
は推定パラメーターの共分散行列にほぼ等しくなります。R2 はイノベーション (真の予測誤差 "e"("t")) の分散です。adm ='ug'
およびadg = gam
は、"ガンマ" =gam
のゲインをもつ "非正規化勾配" アルゴリズムを指定します。このアルゴリズムは、正規化最小平均二乗 (LMS) とも呼ばれます。adm ='ng'
およびadg
=gam
は、"正規化勾配" (正規化最小平均二乗 (NLMS)) アルゴリズムを指定します。これらの場合は、P
は適用されません。adm ='kf'
およびadg =R1
は、R2=1
および R1 =R1
として "カルマン フィルター ベース" のアルゴリズムを指定します。イノベーション "e"("t") の分散が 1 ではなく R2 の場合は、R2*P
がパラメーター推定の共分散行列となり、R1 =R1
/R2 がパラメーター変更の共分散行列となります。th0
thm
の行と整合している、行ベクトルのパラメーターの初期値。既定: すべてゼロ。
P0
パラメーターのスケーリングされた共分散行列の初期値。
既定: 104 ×単位行列。
phi0
引数
phi0
には、データ ベクトルの初期値が含まれます。φ(t) = [y(t–1),...,y(t–na),u(t–1),...,u(t–nb–nk+1)]
z = [y(1),u(1); ... ;y(N),u(N)]
の場合、phi0 = φ(1) および phi = φ(N) です。rarx
をオンラインで使用する場合は、phi0
、th0
、およびP0
を前の出力phi
、thm
(最後の行)、およびP
として使用します。既定: すべてゼロ。
出力引数
thm
モデルの推定されたパラメーター。
thm
のk
番目の行には、時間k
に関連したパラメーターが含まれます。つまり、推定パラメーターは、z
の行k
まで (この行を含む) の行のデータに基づきます。thm
の各行には、以下の順序で推定されたパラメーターが含まれます。thm(k,:) = [a1,a2,...,ana,b1,...,bnb]
多入力モデルでは、"b" は入力でグループ化されます。たとえば、最初の入力に関連した "b" パラメーターが最初にリストされ、2 番目の入力に関連した "b" パラメーターが次にリストされます。
yhat
現在のモデルに従った出力の予測値。つまり、
yhat
の行k
には、すべての過去のデータに基づいたy(k)
の予測値が含まれます。
P
パラメーターのスケーリングされた共分散行列の最終値。
phi
phi
には、データ ベクトルの最終値が含まれます。φ(t) = [y(t–1),...,y(t–na),u(t–1),...,u(t–nb–nk+1)]
例
適応ノイズ キャンセリング: 信号 "y" には、既知の信号 "r" から生じた成分が含まれます。6 次 FIR モデルおよび NLMS アルゴリズムを使用して、"r" を "y" に関連付けるシステムを再帰的に推定することで、この成分を除去します。
z = [y r]; [thm,noise] = rarx(z,[0 6 1],'ng',0.1); % noise is the adaptive estimate of the noise % component of y plot(y-noise)
これがオンライン アプリケーションの場合は、データ "y" および "u" が使用可能になると同時に信号 y - noise
の最良の推定をプロットできます。以下のコードを使用します。
phi = zeros(6,1); P=1000*eye(6); th = zeros(1,6); axis([0 100 -2 2]); plot(0,0,'*'), hold on % Use a while loop while ~abort [y,r,abort] = readAD(time); [th,ns,P,phi] = rarx([y r],'ff',0.98,th,P,phi); plot(time,y-ns,'*') time = time + Dt end
この例では、忘却係数 0.98 の忘却係数アルゴリズムを使用しています。readAD
は、示された時点で A/D コンバーターの値を読み取る関数です。
詳細
バージョン履歴
R2006a より前に導入