主要内容

extendedKalmanFilter

オンラ▪▪ン状態推定に対する拡張カルマンフィルタ▪▪オブジェクトの作成

説明

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcnInitialStateは,離散時間非線形システムのオンライン状態推定に対する拡張カルマンフィルターオブジェクトを作成します。StateTransitionFcnは,時間k - 1における状態ベクトルが与えられた場合の時間kでシステムの状態を計算する関数です。MeasurementFcnは,時間kにおける状態が与えられた場合の時間kでシステムの出力測定を計算する関数です。InitialStateは状態推定の初期値を指定します。

オブジェクトを作成した後,正确的コマンドと预测コマンドを使用し1次離散時間の拡張カルマンフィルターアルゴリズムとリアルタイムデータを使用して状態推定および状態推定誤差の共分散値を更新します。

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcnInitialState名称,值は1以上の名称,值ペア引数を使用して,拡張カルマンフィルタ,オブジェクトの追加属性を指定します。

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcnは,指定された状態遷移関数と測定関数を使用して拡張カルマンフィルタ,オブジェクトを作成します。预测コマンドと正确的コマンドを使用する前に,ドット表記を使って初期状態を指定してください。たとえば,初期状態値が(1, 0)の2状態システムの場合,obj。状态= [1;0]と指定します。

obj= extendedKalmanFilter (StateTransitionFcnMeasurementFcn名称,值は1以上の名称,值ペア引数を使用して,拡張カルマンフィルタ,オブジェクトの追加属性を指定します。预测コマンドと正确的コマンドを使用する前に,名称,值のペア引数またはドット表記を使って初期状態値を指定してください。

obj= extendedKalmanFilter (名称,值は1以上の名称,值ペア引数を使用して,指定されたプロパティで拡張カルマンフィルタ,オブジェクトを作成します。预测コマンドと正确的コマンドを使用する前に,名称,值のペア引数またはドット表記を使って状態遷移関数,測定関数,および初期状態の値を指定してください。

オブジェクトの説明

extendedKalmanFilterは1次離散時間の拡張カルマンフィルターアルゴリズムを使用して,離散時間非線形システムのオンライン状態推定のオブジェクトを作成します。

状態x,入力u,出力y,プロセスノイズwおよび測定ノイズvをもつプラントについて考えます。プラントを非線形システムとして表現できると仮定します。

アルゴリズムは指定した状態遷移関数と測定関数を使用して非線形システムの状態推定 x を計算します。ソフトウェアを使用して,これらの関数にノ。

  • 加法性ノ@ @ズ項-状態遷移方程式と測定方程式は次の形式で表されます。

    x k f x k 1 u 年代 k 1 + w k 1 y k h x k u k + v k

    ここでfは,タescムステップ間の状態xの変化を記述する非線形の状態遷移関数です。非線形の測定関数hは,xをタ@ @ムステップkでの測定値yに関連付けます。wvはそれぞれ,ゼロ平均の無相関プロセスノaaplズと測定ノaaplズです。これらの関数は,方程式のu年代uで表される追加の入力引数をもこともできます。たとえば,追加引数はタkまたは非線形システムに対する入力uにすることもできます。このような引数は複数存在する可能性があります。

    両方の方程式において,ノ。まり,x (k)はプロセスノ@ @ズw (k - 1)に線形に関連し,y (k)は測定ノ@ @ズv (k)に線形に関連します。

  • 非加法性ノ@ @ズ項——ソフトウェアでは,状態x [k]と測定値y [k]がそれぞれプロセスノイズと測定ノイズの非線形関数である,より複雑な状態遷移関数と測定関数もサポートされます。ノesc escズ項が非加法性な場合,状態遷移方程式と測定方程式は次の形式で表されます。

    x k f x k 1 w k 1 u 年代 k 1 y k h x k v k u k

オンラ▪▪ン状態推定を実行する場合,最初に非線形の状態遷移関数fと測定関数hを作成します。次に,これらの非線形関数を使用してextendedKalmanFilterオブジェクトを構築し,ノ。また,状態遷移関数と測定関数のヤコビアンを指定することもできます。これらを指定しない場合,ソフトウェアはヤコビアンを数値的に計算します。

オブジェクトを作成した後,预测コマンドを使用して次のタ电子邮箱ムステップでの状態推定を予測し,正确的でアルゴリズムとリアルタ▪▪ムデ▪▪タを使用して状態推定を修正します。アルゴリズムの詳細にいては,オンライン状態推定のための拡張カルマンフィルターアルゴリズムおよびアンセンテッドカルマンフィルターアルゴリズムを参照してください。

次のコマンドをextendedKalmanFilterオブジェクトとともに使用できます。

コマンド 説明
正确的

タイムステップkで測定されたデータを使用して,タイムステップkでの状態と状態推定誤差の共分散を修正します。

预测

次のタ@ @ムステップでの状態と状態推定誤差の共分散を予測します。

剩余 実際の測定値と予測測定値の差を返します。
克隆

同じオブジェクトプロパティ値を使用して別のオブジェクトを作成します。

構文Obj2 = objを使用した追加のオブジェクトは作成しません。この方法(methoda)で作成された新しいオブジェクトのプロパティに加えられたすべての変更によって,元のオブジェクト(obj)のプロパティも変更されます。

extendedKalmanFilterオブジェクトのプロパティにいては,プロパティを参照してください。

すべて折りたたむ

システムの状態を推定するための拡張カルマンフィルターオブジェクトを定義するには,最初にシステムの状態遷移関数と測定関数を記述して保存します。

この例では,前に記述して保存した状態遷移関数vdpStateFcn.mと測定関数vdpMeasurementFcn.mを使用します。これらの関数は1と等しい非線形パラメーターμを使用して,ファンデルポール振動子への離散近似を記述します。振動子には2の状態があります。

2の状態の初期推定を指定します。要素の行ベクトルまたは列ベクトルとして推定を指定します。ここで,は状態の数です。

initialStateGuess = [1;0];

拡張カルマンフィルタ,オブジェクトを作成します。関数ハンドルを使用して、オブジェクトへの状態遷移関数と測定関数を指定します。

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,initialStateGuess);

オブジェクトには,プロセスと測定ノ。

作成したオブジェクトから状態と状態推定誤差の共分散を推定するには,正确的コマンドと预测コマンドおよびリアルタ▪▪ムデ▪▪タを使用します。

2つの状態と1つの出力を使用して,ファンデルポール振動子の拡張カルマンフィルターオブジェクトを作成します。前に記述して保存した状態遷移関数vdpStateFcn.mと測定関数vdpMeasurementFcn.mを使用します。これらの関数は,加法性プロセスと測定ノ。2の状態の初期状態の値を[2;0]と指定します。

システムに2つの状態があり,プロセスノイズが加法性であるため,プロセスノイズは2要素ベクトルであり,プロセスノイズ共分散は2行2列の行列になります。プロセスノ▪▪ズ項間に相互相関がないことと,両方の項に同じ分散0.01▪▪があることを仮定します。プロセスノ▪▪ズ共分散をスカラ▪▪として指定できます。ソフトウェアはスカラー値を使用して,対角方向に0.01をもつ2行2列の対角行列を作成します。

オブジェクトの作成中にプロセスノ@ @ズ共分散を指定します。

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,[2;0],...“ProcessNoise”, 0.01);

あるいは,ドット表記を使用してオブジェクトを作成した後,ノesc escズ共分散を指定できます。たとえば,測定ノaaplズ共分散を0.2として指定します。

obj。米easurementNoise = 0.2;

システムには1の出力しかないため測定ノズは1要素ベクトルであり,MeasurementNoiseプロパティは測定ノ@ @ズの分散を表します。

版权所有The MathWorks, Inc.

2つの状態と1つの出力を使用して,ファンデルポール振動子の拡張カルマンフィルターオブジェクトを作成します。前に記述して保存した状態遷移関数vdpStateFcn.mと測定関数vdpMeasurementFcn.mを使用します。2つの状態の初期状態の値を [2;0] と指定します。

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,[2;0]);

拡張カルマンフィルタ,アルゴリズムは状態推定に状態遷移関数と測定関数のヤコビアンを使用します。ヤコビ関数を記述して保存し,オブジェクトへの関数ハンドルとして指定します。この例では,前に記述して保存した関数vdpStateJacobianFcn.mvdpMeasurementJacobianFcn.mを使用します。

obj。StateTransitionJacobianFcn = @vdpStateJacobianFcn;obj。米easurementJacobianFcn = @vdpMeasurementJacobianFcn;

関数のヤコビアンを指定しないと,ソフトウェアが数値的にヤコビアンを計算することに注意してください。この数値計算によって処理時間が増加し,状態推定の数値が不正確になる可能性があります。

2つの状態と1つの出力を使用して,ファンデルポール振動子の拡張カルマンフィルターオブジェクトを作成します。状態遷移関数のプロセスノ@ @ズ項が加法性であると仮定します。したがって,状態とプロセスノ。また,測定ノ。したがって,測定と測定ノ。

obj = extendedKalmanFilter(“HasAdditiveMeasurementNoise”、假);

状態遷移関数と測定関数を指定します。前に記述して保存した関数vdpStateFcn.mvdpMeasurementNonAdditiveNoiseFcn.mを使用します。

状態遷移関数は,プロセスノ。測定関数は測定ノ@ @ズが非加法性であると仮定して記述されます。

obj。StateTransitionFcn = @vdpStateFcn;obj。米easurementFcn = @vdpMeasurementNonAdditiveNoiseFcn;

2の状態の初期状態の値を[2;0]と指定します。

obj。状态= [2;0];

これで,正确的コマンドと预测コマンドを使用して,作成したオブジェクトから状態と状態推定誤差の共分散の値を推定できます。

次の状態遷移方程式と測定方程式に従って状態xと測定値yが変化するような入力uをも,非線形システムにいて考えます。

x k x k - 1 + u k - 1 + w k - 1

y k x k + 2 u k + v k 2

システムのプロセスノ@ @ズwは加法性で,測定ノvは非加法性です。

システムの状態遷移関数と測定関数を作成します。追加入力uを使用して関数を指定します。

F = @(x,u)(根号(x+u));H = @(x,v,u)(x+2*u+v^2);

fhは状態遷移関数と測定関数をそれぞれ保存する無名関数に対する関数ハンドルです。測定関数では,測定ノvも入力として指定されます。追加入力uの前に,vが入力として指定されることに注意してください。

指定した関数を使用して,非線形システムの状態を推定するために拡張カルマンフィルターオブジェクトを作成します。状態の初期値を1,測定ノescズを非加法性として指定します。

obj = extendedKalmanFilter(f,h,1,“HasAdditiveMeasurementNoise”、假);

測定ノ@ @ズ共分散を指定します。

obj。米easurementNoise = 0.01;

これで,预测コマンドと正确的コマンドを使用して,システムの状態を推定できます。uの値を预测正确的に渡すと,状態遷移関数と測定関数にそれぞれ渡されます。

タ@ @ムステップkで測定値yk] =0.8と入力uk] =0.2を使用して状態推定値を修正します。

正确的(obj, 0.8, 0.2)

次のタ@ @ムステップでuk] =0.2が与えられた場合の状態を予測します。

预测(obj, 0.2)

予測値と測定値の誤差,まり“残差”を取得します。

[Residual, ResidualCovariance] = Residual (obj,0.8,0.2);

入力引数

すべて折りたたむ

状態遷移関数f。関数ハンドルとして指定します。この関数は、タイム ステップ k-1 で状態ベクトルが与えられた場合の、タイム ステップ k でシステムの Ns 要素をもつ状態ベクトルを計算します。Ns は非線形システムの状態の数です。

非線形システムの状態遷移関数を記述および保存し,それを使用してオブジェクトを作成します。たとえば,vdpStateFcn.mが状態遷移関数の場合,StateTransitionFcn@vdpStateFcnとして指定します。StateTransitionFcnを無名関数への関数ハンドルとして指定することもできます。

記述する関数への入力は,オブジェクトのHasAdditiveProcessNoiseプロパティでプロセスノesc escズを加法性として指定するか,非加法性として指定するかによって異なります。

  • HasAdditiveProcessNoiseがtrue -プロセスノescズwは加法性であり,状態遷移関数は前のタイムステップでの状態値の関数として状態が変化する方法を指定します。

    x(k) = f(x(k-1),Us1,…,Usn)

    ここでx (k)は時間kで推定された状態であり,Us1,…,Usnはシステム入力やサンプル時間など,状態遷移関数で要求された任意の追加入力引数です。推定中にこれらの追加引数を预测コマンドに渡すと,これらは状態遷移関数に渡されます。

  • HasAdditiveProcessNoiseが错:プロセスノイズは非加法性であり,状態遷移関数はプロセスノイズの関数として状態が変化する方法も指定します。

    x(k) = f(x(k-1),w(k-1),Us1,…,Usn)

加法性のプロセスノaapl . exeズを使用した状態遷移関数の例を確認するには,コマンドラaapl . exeンで编辑vdpStateFcnを入力します。

測定関数h。関数ハンドルとして指定します。この関数は、タイム ステップ k で状態ベクトルが与えられた場合の、タイム ステップ k で非線形システムの N の要素をもつ出力測定ベクトルを計算します。N はシステムの測定値の数です。測定関数を記述して保存し、それを使用してオブジェクトを作成します。たとえば、vdpMeasurementFcn.mが測定関数の場合,MeasurementFcn@vdpMeasurementFcnとして指定します。MeasurementFcnを無名関数への関数ハンドルとして指定することもできます。

関数への入力は,オブジェクトのHasAdditiveMeasurementNoiseプロパティで測定ノesc escズを加法性として指定するか,非加法性として指定するかによって異なります。

  • HasAdditiveMeasurementNoiseがtrue -測定ノescズvは加法性であり,測定関数は状態値の関数として測定値が変化する方法を指定します。

    y(k) = h(x(k),Um1,…,Umn)

    ここでy (k)x (k)は時間kで推定された出力と推定された状態であり,听Um1,…,学院は測定関数で要求されたオプションの入力引数です。たとえば,オブジェクトを追跡するために複数のセンサーを使用する場合、追加入力をセンサーの位置にすることができます。推定中にこれらの追加引数を正确的コマンドに渡すと,これらは測定関数に渡されます。

  • HasAdditiveMeasurementNoiseが错:測定ノイズは非加法性であり,測定関数は測定ノイズの関数として出力測定値が変化する方法も指定します。

    y(k) = h(x(k),v(k),Um1,…,Umn)

HasMeasurementWrappingプロパティを有効にしている場合,測定関数の出力にラップの範囲も含まれていなければなりません。これは“N”2列の行列として指定します。1列目に最小測定範囲、2 列目に最大測定範囲を指定します。“N”はシステムの測定値の数です。

加法性のプロセスノaapl . exeズを使用した測定関数の例を確認するには,コマンドラaapl . exeンで编辑vdpMeasurementFcnを入力します。非加法性のプロセスノaapl . exeズを使用した測定関数の例を確認するには,コマンドラaapl . exeンで编辑vdpMeasurementNonAdditiveNoiseFcnを入力します。

初期状態推定値。Ns要素ベクトルとして指定します。ここでNs はシステムの状態の数です。システムに関する知識に基づいて、初期状態値を指定します。

指定した値は,オブジェクトの状态プロパティに保存されます。InitialStateを列ベクトルとして指定すると,状态も列ベクトルになり,预测コマンドと正确的コマンドは状態推定値を列ベクトルとして返します。それ以外の場合,行ベクトルが返されます。

単精度浮動小数点変数を使用するフィルタ,が必要な場合,InitialStateを単精度のベクトル変数として指定します。たとえば,状態遷移関数vdpStateFcn.mと測定関数vdpMeasurementFcn.mを使用した2状態のシステムの場合,以下のように初期状態推定値[1, 2]を使用して拡張カルマンフィルタ,オブジェクトを作成します。

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,single([1;2]))

デ,タ型:|

名前と値の引数

引数のオプションのペアをName1 = Value1,…,以=家として指定します。的名字は引数名,价值は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。

R2021aより前では,名前と値をそれぞれコンマを使って区切り,的名字を引用符で囲みます。

名称,值引数を使用して,オブジェクトの作成時にextendedKalmanFilterオブジェクトのプロパティを指定します。たとえば,拡張カルマン フィルター オブジェクトを作成し、プロセス ノイズ共分散を 0.01 として指定します。

obj = extendedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState,“ProcessNoise”, 0.01);

プロパティ

すべて折りたたむ

extendedKalmanFilterオブジェクトのプロパティには次の3のタプがあります。

  • 名称,值引数を使用したオブジェクトの作成時またはその後の状態推定中の任意の時点で,複数回指定できる調整可能なプロパティ。オブジェクトの作成後に,ドット表記を使用して調整可能なプロパティを変更します。

    obj = extendedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState);obj。ProcessNoise = 0.01;

    調整可能なプロパティは状态StateCovarianceProcessNoiseおよびMeasurementNoiseです。

  • オブジェクトの作成時またはその後にドット表記を使用して1回のみ指定できる調整不可能なプロパティ。これらのプロパティは正确的预测を使用して状態推定の前に指定します。StateTransitionFcnMeasurementFcnStateTransitionJacobianFcnおよびMeasurementJacobianFcnプロパティはこのカテゴリに属します。

  • オブジェクトの作成中に指定しなければならない調整不可能なプロパティ。HasAdditiveProcessNoiseおよびHasAdditiveMeasurementNoiseプロパティはこのカテゴリに属します。

測定ノ@ @ズ特性。次のいずれかの値として指定されます。

  • 真正的-測定ノie浏览器ズvは加法性です。MeasurementFcnで指定する測定関数hは次の形をとります。

    y(k) = h(x(k),Um1,…,Umn)

    ここでy (k)x (k)は時間kで推定された出力と推定された状態であり,听Um1,…,学院は測定関数で要求されたオプションの入力引数です。

  • -測定ノie浏览器ズは非加法性です。測定関数は状態“および”測定ノ电子邮箱ズの関数として出力測定値が変化する方法を指定します。

    y(k) = h(x(k),v(k),Um1,…,Umn)

HasAdditiveMeasurementNoiseは調整不可能なプロパティです。このプロパティはオブジェクトの作成中にのみ指定できます。ドット表記を使用して変更することはできません。

プロセスノ@ @ズ特性。次のいずれかの値として指定されます。

  • 真正的-プロセスノie浏览器ズwは加法性です。StateTransitionFcnで指定する状態遷移関数fは次の形をとります。

    x(k) = f(x(k-1),Us1,…,Usn)

    ここでx (k)は時間kでの推定状態であり,Us1,…,Usnは状態遷移関数で要求された任意の追加入力引数です。

  • -プロセスノie浏览器ズは非加法性です。状態遷移関数は前のタイム ステップで状態“および”プロセスノ电子邮箱ズの関数として状態が変化する方法を指定します。

    x(k) = f(x(k-1),w(k-1),Us1,…,Usn)

HasAdditiveProcessNoiseは調整不可能なプロパティです。このプロパティはオブジェクトの作成中にのみ指定できます。ドット表記を使用して変更することはできません。

測定関数h。関数ハンドルとして指定します。この関数は、タイム ステップ k で状態ベクトルが与えられた場合の、タイム ステップ k で非線形システムの N の要素をもつ出力測定ベクトルを計算します。N はシステムの測定値の数です。測定関数を記述して保存し、それを使用してオブジェクトを作成します。たとえば、vdpMeasurementFcn.mが測定関数の場合,MeasurementFcn@vdpMeasurementFcnとして指定します。MeasurementFcnを無名関数への関数ハンドルとして指定することもできます。

関数への入力は,オブジェクトのHasAdditiveMeasurementNoiseプロパティで測定ノesc escズを加法性として指定するか,非加法性として指定するかによって異なります。

  • HasAdditiveMeasurementNoiseがtrue -測定ノescズvは加法性であり,測定関数は状態値の関数として測定値が変化する方法を指定します。

    y(k) = h(x(k),Um1,…,Umn)

    ここでy (k)x (k)は時間kで推定された出力と推定された状態であり,听Um1,…,学院は測定関数で要求されたオプションの入力引数です。たとえば,オブジェクトを追跡するために複数のセンサーを使用する場合、追加入力をセンサーの位置にすることができます。推定中にこれらの追加引数を正确的コマンドに渡すと,これらは測定関数に渡されます。

  • HasAdditiveMeasurementNoiseが错:測定ノイズは非加法性であり,測定関数は測定ノイズの関数として出力測定値が変化する方法も指定します。

    y(k) = h(x(k),v(k),Um1,…,Umn)

HasMeasurementWrappingプロパティを有効にしている場合,測定関数の出力にラップの範囲も含まれていなければなりません。これは“N”2列の行列として指定します。1列目に最小測定範囲、2 列目に最大測定範囲を指定します。“N”はシステムの測定値の数です。

加法性のプロセスノaapl . exeズを使用した測定関数の例を確認するには,コマンドラaapl . exeンで编辑vdpMeasurementFcnを入力します。非加法性のプロセスノaapl . exeズを使用した測定関数の例を確認するには,コマンドラaapl . exeンで编辑vdpMeasurementNonAdditiveNoiseFcnを入力します。

MeasurementFcnは調整不可能なプロパティです。正确的コマンドを使用する前に,オブジェクトの作成中,またはオブジェクトの作成後にドット表記を使用して1回指定できます。正确的コマンドを使用した後は変更できません。

測定関数hのヤコビアン。以下のいずれかとして指定します。

  • []-ヤコビアンは正确的コマンドへのすべての呼び出しで数値計算されます。これにより,処理時間が増加し,状態推定の数値が不正確になる可能性があります。

  • 関数ハンドル-ヤコビ関数を記述して保存し,関数へのハンドルを指定します。たとえば,vdpMeasurementJacobianFcn.mがヤコビ関数の場合,MeasurementJacobianFcn@vdpMeasurementJacobianFcnとして指定します。

    この関数は,状態および測定ノ。ヤコビ関数に対する入力数は,測定関数に対する入力数と等しくなければならず,両方の関数において同じ順序で指定しなければなりません。ヤコビ関数の出力数はHasAdditiveMeasurementNoiseプロパティによって異なります。

    • HasAdditiveMeasurementNoiseがtrue -この関数は状態に対する測定関数の偏導関数( h / x )を計算します。出力はN行Ns列のヤコビ行列です。ここでN はシステムの測定値の数で、Ns は状態の数です。

    • HasAdditiveMeasurementNoiseがfalse -この関数は,測定ノ h / v )である,2番目の出力も返します。2番目の出力は N 行 V 列のヤコビ行列として返されます。ここで V は測定ノイズ項の数です。

加法性の測定ノaapl . exeズに対するヤコビ関数の例を確認するには,コマンドラaapl . exeンで编辑vdpMeasurementJacobianFcnを入力します。

MeasurementJacobianFcnは調整不可能なプロパティです。正确的コマンドを使用する前に,オブジェクトの作成中,またはオブジェクトの作成後にドット表記を使用して1回指定できます。正确的コマンドを使用した後は変更できません。

測定ノ@ @ズ共分散。HasAdditiveMeasurementNoiseプロパティの値に応じて,スカラ,または行列として指定されます。

  • HasAdditiveMeasurementNoiseがtrue -共分散をスカラまたはN行N列の行数として指定します。ここでnはシステムの測定値の数です。測定ノ▪▪ズ項の間に相互相関がなく,すべての項が同じ分散をも▪▪場合は,スカラ▪▪を指定します。ソフトウェアはスカラ,値を使用してn行n列の対角行列を作成します。

  • HasAdditiveMeasurementNoiseがfalse -共分散をV行V列の行列として指定します。ここでvは測定ノescズ項の数です。正确的を使用する前にMeasurementNoiseを指定しなければなりません。MeasurementNoiseをはじめて行列として指定してからMeasurementNoiseを変更した後,スカラ,として指定することもできます。測定ノ▪▪ズ項の間に相互相関がなく,すべての項が同じ分散をも▪▪場合は,スカラ▪▪として指定します。ソフトウェアは,対角方向にスカラ,をもv行v列の対角行列にスカラ,を拡張します。

MeasurementNoiseは調整可能なプロパティです。これはドット表記を使用して変更できます。

プロセスノ@ @ズ共分散。HasAdditiveProcessNoiseプロパティの値に応じて,スカラ,または行列として指定されます。

  • HasAdditiveProcessNoiseがtrue -共分散をスカラ,またはNs行Ns列の行列として指定します。ここでNsはシステムの状態の数です。プロセスノ▪▪ズ項の間に相互相関がなく,すべての項が同じ分散をも▪▪場合は,スカラ▪▪を指定します。ソフトウェアはスカラ,値を使用してNs行Ns列の対角行列を作成します。

  • HasAdditiveProcessNoiseが假-共分散をW行W列の行列として指定します。ここでwはプロセスノズ項の数です。预测を使用する前にProcessNoiseを指定しなければなりません。ProcessNoiseをはじめて行列として指定してからProcessNoiseを変更した後,スカラ,として指定することもできます。プロセスノイズ項の間に相互相関がなく,すべての項が同じ分散をもつ場合は,スカラーとして指定します。ソフトウェアはスカラをw行w列の対角行列に拡張します。

ProcessNoiseは調整可能なプロパティです。これはドット表記を使用して変更できます。

非線形システムの状態。サesc escズNsのベクトルとして指定します。ここでNsはシステムの状態の数です。

预测コマンドを使用すると,状态はタイムステップk - 1における状態値を使用して,タイムステップkで予測された値で更新されます。正确的コマンドを使用すると,状态はタイムステップkで測定されたデータを使用して,タイムステップkで推定された値で更新されます。

状态の初期値はオブジェクトの作成中にInitialState入力引数に指定した値です。InitialStateを列ベクトルとして指定すると,状态も列ベクトルになり,预测コマンドと正确的コマンドは状態推定値を列ベクトルとして返します。それ以外の場合,行ベクトルが返されます。単精度浮動小数点変数を使用するフィルタ,が必要な場合,InitialState入力引数を使用してオブジェクトを作成する際に,状态を単精度変数として指定しなければなりません。

状态は調整可能なプロパティです。これはドット表記を使用して変更できます。

状態推定誤差の共分散。スカラまたは Ns 行 Ns 列の行列として指定します。ここで Ns はシステムの状態の数です。スカラーを指定すると、ソフトウェアはスカラー値を使用して Ns 行 Ns 列の対角行列を作成します。

InitialState入力引数に指定する初期状態の値に確信がもてない場合,共分散に高い値を指定します。

预测コマンドを使用すると,StateCovarianceはタイムステップk - 1における状態値を使用して,タイムステップkで予測された値で更新されます。正确的コマンドを使用すると,StateCovarianceはタイムステップkで測定されたデータを使用して,タイムステップkで推定された値で更新されます。

StateCovarianceは調整可能なプロパティです。これは,正确的コマンドまたは预测コマンドを使用した後,ドット表記を使用して変更できます。

状態遷移関数f。関数ハンドルとして指定します。この関数は、タイム ステップ k-1 で状態ベクトルが与えられた場合の、タイム ステップ k でシステムの Ns 要素をもつ状態ベクトルを計算します。Ns は非線形システムの状態の数です。

非線形システムの状態遷移関数を記述および保存し,それを使用してオブジェクトを作成します。たとえば,vdpStateFcn.mが状態遷移関数の場合,StateTransitionFcn@vdpStateFcnとして指定します。StateTransitionFcnを無名関数への関数ハンドルとして指定することもできます。

記述する関数への入力は,オブジェクトのHasAdditiveProcessNoiseプロパティでプロセスノesc escズを加法性として指定するか,非加法性として指定するかによって異なります。

  • HasAdditiveProcessNoiseがtrue -プロセスノescズwは加法性であり,状態遷移関数は前のタイムステップでの状態値の関数として状態が変化する方法を指定します。

    x(k) = f(x(k-1),Us1,…,Usn)

    ここでx (k)は時間kで推定された状態であり,Us1,…,Usnはシステム入力やサンプル時間など,状態遷移関数で要求された任意の追加入力引数です。推定中にこれらの追加引数を预测コマンドに渡すと,これらは状態遷移関数に渡されます。

  • HasAdditiveProcessNoiseが错:プロセスノイズは非加法性であり,状態遷移関数はプロセスノイズの関数として状態が変化する方法も指定します。

    x(k) = f(x(k-1),w(k-1),Us1,…,Usn)

加法性のプロセスノaapl . exeズを使用した状態遷移関数の例を確認するには,コマンドラaapl . exeンで编辑vdpStateFcnを入力します。

StateTransitionFcnは調整不可能なプロパティです。预测コマンドを使用する前に,オブジェクトの作成中,またはオブジェクトの作成後にドット表記を使用して1回指定できます。预测コマンドを使用した後は変更できません。

状態遷移関数fのヤコビアン。以下のいずれかとして指定します。

  • []-ヤコビアンは预测コマンドへのすべての呼び出しで数値計算されます。これにより,処理時間が増加し,状態推定の数値が不正確になる可能性があります。

  • 関数ハンドル-ヤコビ関数を記述して保存し,関数へのハンドルを指定します。たとえば,vdpStateJacobianFcn.mがヤコビ関数の場合,StateTransitionJacobianFcn@vdpStateJacobianFcnとして指定します。

    この関数は,状態とプロセスノ。ヤコビ関数に対する入力数は,状態遷移関数の入力数と等しくなければならず,両方の関数において同じ順序で指定しなければなりません。関数の出力数はHasAdditiveProcessNoiseプロパティによって異なります。

    • HasAdditiveProcessNoiseがtrue -関数は状態に対する状態遷移関数の偏導関数( f / x )を計算します。出力はNs行Ns列のヤコビ行列です。ここでNsは状態の数です。

    • HasAdditiveProcessNoiseがfalse -関数は,プロセスノ f / w )である,2番目の出力も返さなければなりません。2番目の出力は Ns 行 W 列のヤコビ行列として返されます。ここで W はプロセス ノイズ項の数です。

拡張カルマンフィルタ,アルゴリズムはヤコビアンを使用して状態推定誤差の共分散を計算します。

加法性のプロセスノaapl . exeズに対するヤコビ関数の例を確認するには,コマンドラaapl . exeンで编辑vdpStateJacobianFcnを入力します。

StateTransitionJacobianFcnは調整不可能なプロパティです。预测コマンドを使用する前に,オブジェクトの作成中,またはオブジェクトの作成後にドット表記を使用して1回指定できます。预测コマンドを使用した後は変更できません。

測定値のラップの有効化。0または 1 として指定します。測定値のラップを有効にして、モデルの状態に依存しない循環測定がある場合に状態を推定できます。このパラメーターを選択する場合、指定する測定関数に次の 2 つの出力が含まれていなければなりません。

  1. タ@ @ムステップ“k”の状態ベクトルが与えられた場合の測定値。タ@ @ムステップ“k”における非線形システムの“N”要素の出力測定ベクトルとして指定します。“N”はシステムの測定値の数です。

  2. 測定値のラップの範囲。“N”2列の行列として指定します。1列目に最小測定範囲、2 列目に最大測定範囲を指定します。

HasMeasurementWrappingプロパティを有効にすると,定義した範囲内で測定残差がラップされ,正しくない測定残差の値によるフィルターの発散を防ぐのに役立ちます。例にいては,拡張カルマンフィルタ,を使用したラップされた測定値による状態推定を参照してください。

HasMeasurementWrappingは調整不可能なプロパティです。オブジェクトの作成中に 1 回だけ指定できます。状態推定オブジェクトの作成後は変更できません。

出力引数

すべて折りたたむ

オンラ▪▪ン状態推定に対する拡張カルマンフィルタ▪▪オブジェクト。extendedKalmanFilterオブジェクトとして返されます。このオブジェクトは指定されたプロパティを使用して作成されます。正确的コマンドと预测コマンドを使用して,拡張カルマンフィルターアルゴリズムを使用し,状態と状態推定誤差の共分散を推定します。

预测を使用すると,obj。状态obj。StateCovarianceはタイムステップk - 1における状態値を使用して,タイムステップkで予測された値で更新されます。正确的を使用すると,obj。状态obj。StateCovarianceはタイムステップkで測定されたデータを使用して,タイムステップkで推定された値で更新されます。

拡張機能

バ,ジョン履歴

R2016bで導入

すべて展開する

R2020bでの動作変更