Main Content

ssest

時間領域または周波数領域のデータを使用して状態空間モデルを推定する

説明

状態空間モデルの推定

sys = ssest(tt,nx) は、timetable tt のすべての入力信号と出力信号を使用して、次数 nx の連続時間状態空間モデル sys を推定します。

この構文は SISO および MISO システムに使用できます。この関数では、timetable の最後の変数は単一の出力信号であると仮定します。

sys は次の形式の idss モデルです。

x˙(t)=Ax(t)+Bu(t)+Ke(t)y(t)=Cx(t)+Du(t)+e(t)

A、B、C、D、および K は状態空間行列です。u(t) は入力、y(t) は出力、e(t) は外乱、x(t) は nx 個の状態のベクトルです。

A、B、C、および K のエントリは、既定ではすべて推定可能な自由パラメーターです。D は既定ではゼロに固定されます。これは、静的システムを除いて直達がないことを意味します (nx = 0)。

離散時間モデルを推定するには、名前と値の構文を使用して 'Ts' をモデル サンプル時間に設定します。

MIMO モデルを推定するには、名前と値の構文を使用し、'InputName''OutputName' を対応する timetable 変数名に設定して入出力チャネルを指定します。

tt で使用可能なすべてのチャネルを使用しない場合は、'InputName' および 'OutputName' を使用して特定のチャネルを指定することもできます。

sys = ssest(u,y,nx,'Ts',Ts) は、コンマ区切りの行列 u,y 内の時間領域入力信号と出力信号およびモデル サンプル時間 Ts を使用して、離散時間状態空間モデルを推定します。

データのサンプル時間は Ts 秒と仮定されます。この構文は SISO、MISO、および MIMO システムに使用できます。

Ts を指定せずに u,y を使用して連続時間モデルを推定することは推奨されません。データのサンプル時間は 1 秒と仮定されます。このサンプル時間は変更できません。サンプル時間が 1 秒以外のデータから連続時間モデルを推定する場合は、まず行列データを timetable または iddata オブジェクトに変換する必要があります。この変換の例については、timetable への SISO 行列データの変換または連続時間モデルを推定するために MIMO 行列データを timetable に変換を参照してください。

sys = ssest(data,nx) は、データ オブジェクト data 内の時間領域データまたは周波数領域データを使用して、連続時間状態空間モデルを推定します。

この構文は特に、周波数領域データまたは周波数応答データを使用して状態空間モデルを推定する場合、またはデータ オブジェクトが提供する追加情報 (サンプル間動作、データのサンプル時間、実験のラベル付けなど) を利用する場合に使用します。

時系列状態空間モデルの推定

sys = ssest(tt,nx) は、timetable tt のデータに適合する連続時系列モデル sys を推定します。tt には単一の数値変数が含まれている必要があります。この関数は、timetable 変数データを時系列として解釈します。入力はなく、単一の出力があります。

時系列モデルでは、sys idss モデルの形式は次のとおりです。

x˙(t)=Ax(t)+Ke(t)y(t)=Cx(t)+e(t)

sys = ssest(tt,nx,'OutputName',outputVariables,'InputName',[]) は、outputVariables で指定した変数名をもつ timetable 出力信号を使用する多変量時系列モデルを推定します。この関数は、指定した変数を多変量時系列として解釈します。'OutputName'tt 内のすべての変数を指定した場合、'InputName' の指定を省略できます。

sys = ssest([],y,nx,'Ts',Ts) は、出力データ行列 y からサンプル時間 Ts をもつ離散時系列モデルを推定します。sys には y 内の列数と同じ数の出力が含まれます。

sys = ssest(data,nx) は、iddata プロパティ data.OutputData 内のデータを使用する時系列モデルを推定します。プロパティ data.InputData は空でなければなりません。

追加モデル オプションの指定

sys = ssest(___,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加のオプションを組み込みます。

たとえば、sys = ssest(um,ym,np,'Ts',0.1) を使用して、0.1 のサンプル時間をもつ行列データから離散時間システムを指定します。sys = ssest(data,nx,'InputName',["u1","u4"],'OutputName',["y1","y3"]) を使用して、MIMO timetable データに使用する変数と一致する入力および出力信号変数名を指定します。A、B、C、D、および K の各行列の既定の動作を変更するには、名前と値の引数 'Form''Feedthrough''DisturbanceModel' を使用します。

この構文では、前述の任意の入力引数の組み合わせで使用できます。

初期パラメーターの構成

sys = ssest(tt,init_sys) は、線形システム init_sys を使用して、timetable tt を使用した推定用に sys の初期パラメーター化を構成します。

sys = ssest(u,y,init_sys) は、推定に行列データ u,y を使用します。init_sys が連続時間モデルの場合は、行列の代わりに timetable を使用することが推奨されます。

sys = ssest(data,init_sys) は、推定にデータ オブジェクト data を使用します。

追加の推定オプションの指定

sys = ssest(___,opt) は、推定の目的、初期状態の処理、正則化、および推定に使用する数値探索法などのオプションを指定するオプション セット opt を組み込みます。opt は、前述の任意の入力引数の組み合わせの後に指定できます。

推定された初期状態を返す

[sys,x0] = ssest(___) は、推定時に計算された初期状態の値を返します。

すべて折りたたむ

状態空間モデルを推定し、その応答を測定出力と比較します。

timetable に格納されている入出力データを読み込みます。

load sdata1 tt1

4 次状態空間モデルを推定します。

nx = 4;
sys = ssest(tt1,nx);

シミュレートしたモデルの応答を測定出力と比較します。

compare(tt1,sys)

プロットから、シミュレートしたモデルと推定データの間の適合率が 70% を超えていることがわかります。

推定に関する詳しい情報は、idsssys.Report プロパティを調べて確認できます。

sys.Report
ans = 
          Status: 'Estimated using SSEST with prediction focus'
          Method: 'SSEST'
    InitialState: 'zero'
        N4Weight: 'CVA'
       N4Horizon: [6 10 10]
             Fit: [1x1 struct]
      Parameters: [1x1 struct]
     OptionsUsed: [1x1 idoptions.ssest]
       RandState: []
        DataUsed: [1x1 struct]
     Termination: [1x1 struct]

たとえば、終了条件に関する詳しい情報を調べます。

sys.Report.Termination
ans = struct with fields:
                 WhyStop: 'No improvement along the search direction with line search.'
              Iterations: 7
    FirstOrderOptimality: 85.9759
                FcnCount: 123
              UpdateNorm: 7.7097
         LastImprovement: 0

レポートには、反復回数および推定で反復が停止した理由に関する情報が含まれています。

行列 umat1 および ymat1 内の入出力データと、サンプル時間 Ts を読み込みます。これらの行列は、状態空間モデルで 4 次モデルを推定するのに使用される timetable データと同じ推定データを格納しています。

load sdata1 umat1 ymat1 Ts

引数 nx1:10 の範囲に指定して、最適なモデル次数を調べます。

nx = 1:10;
sys = ssest(umat1,ymat1,nx,'Ts',Ts);

自動生成されるプロットに、nx で指定した次数のモデルに対するハンケル特異値が表示されます。

ハンケル特異値が比較的小さい状態については破棄してかまいません。提案される既定の次数の選択は 2 です。

[選択した次数] のリストでモデル次数を選択し、[適用] をクリックします。sys は離散時間モデルです。

行列ペア umat7 および ymat7 内の時間領域システム応答データを読み込みます。

load sdata7 umat7 ymat7 Ts;

データの 4 次状態空間モデルを同定します。最初の入力に既知の遅延 2 秒を指定し、2 番目の入力に 0 秒を指定します。

nx = 4;
sys = ssest(umat7(1:300,:),ymat7(1:300,:),nx,'Ts',Ts,'InputDelay',[2;0]);

A、B、および C の各行列の正準形を変更し、D 行列に直達項を含め、K 行列の外乱モデルの推定を排除します。

入出力データを読み込み、ssest の既定のオプションを使用して 4 次システムを推定します。

load iddata1 z1
sys1 = ssest(z1,4);

コンパニオン形式を指定し、A 行列を既定の A 行列と比較します。

sys2 = ssest(z1,4,'Form','companion');
A1 = sys1.A
A1 = 4×4

   -0.5155   -3.8483    0.6657   -0.2666
    5.8665   -2.7285    1.0649   -1.4694
   -0.4487    0.9308   -0.6235   18.8148
   -0.4192    0.5595  -16.0688    0.5399

A2 = sys2.A
A2 = 4×4
103 ×

         0         0         0   -7.1122
    0.0010         0         0   -0.9547
         0    0.0010         0   -0.3263
         0         0    0.0010   -0.0033

直達項を含め、D 行列を比較します。

sys3 = ssest(z1,4,'Feedthrough',1);
D1 = sys1.D
D1 = 0
D3 = sys3.D
D3 = 0.0339

外乱のモデル化を排除し、K 行列を比較します。

sys4 = ssest(z1,4,'DisturbanceModel','none');
K1 = sys1.K
K1 = 4×1

    0.0520
    0.0973
    0.0151
    0.0270

K4 = sys4.K
K4 = 4×1

     0
     0
     0
     0

ssest の初期状態を独立推定パラメーターとして指定します。

ssest は複数の手法のいずれかを使用して初期状態を処理できます。既定では、ssest は推定データに基づいて手法を自動的に選択します。ssestOptions を使用してオプション セットを変更して、自分で手法を選択できます。

入出力データ tt1 を読み込み、既定のオプションを使用して 2 次状態空間モデル sys を推定します。初期状態 x0 を返す構文を使用します。

load sdata1 tt1
[sys,x0] = ssest(tt1,2);
x0
x0 = 2×1

     0
     0

既定では、推定は InitialState'auto' 設定を使用して実行されます。ssest によって適用された手法を確認するには、sys.ReportInitialState の値を調べます。

sys.Report.InitialState
ans = 
'zero'

ソフトウェアは 'zero' 手法を適用しています。これは、初期状態を推定する代わりに初期状態がゼロに設定されたことを意味します。この選択は、x0 に対して返された 0 値に整合しています。

ssest が代わりに 'estimate' 設定を使用して独立パラメーターとして初期状態を推定するように指定します。ssestOptions を使用して、変更したオプション セットを作成し、そのオプション セットを指定して新しいモデルを推定します。

opt = ssestOptions('InitialState','estimate');
[sys1,x0] = ssest(tt1,2,opt);
x0
x0 = 2×1

    0.0068
    0.0052

これで、x0 には非ゼロの値が含まれた推定パラメーターが含まれるようになりました。

狭帯域幅信号から 2 次システムの正則化された 5 次状態空間モデルを取得します。

推定データを読み込みます。

load regularizationExampleData eData;

推定データの生成に使用される伝達関数モデルを作成します (真のシステム)。

trueSys = idtf([0.02008 0.04017 0.02008],[1 -1.561 0.6414],1);

正則化していない状態空間モデルを推定します。

opt = ssestOptions('SearchMethod','lm');
m = ssest(eData,5,'form','modal','DisturbanceModel','none','Ts',eData.Ts,opt);

正則化された状態空間モデルを推定します。

opt.Regularization.Lambda = 10;
mr = ssest(eData,5,'form','modal','DisturbanceModel','none','Ts',eData.Ts,opt);

モデルの出力を推定データと比較します。

compare(eData,m,mr);

モデルのインパルス応答を比較します。

impulse(trueSys,m,mr,50);
legend('trueSys','m','mr');

状態空間モデル推定用のパラメーター制約および初期値を構成します。

idss モデルを作成して、推定の初期パラメーター化を指定します。

A = blkdiag([-0.1 0.4; -0.4 -0.1],[-1 5; -5 -1]);
B = [1; zeros(3,1)]; 
C = [1 1 1 1]; 
D = 0; 
K = zeros(4,1);
x0 = [0.1 0.1 0.1 0.1];
Ts = 0;
init_sys = idss(A,B,C,D,K,x0,Ts);

K のすべてのエントリを 0 に設定することで、状態外乱要素のない idss モデルを作成します。

Structure プロパティを使用して、モデル パラメーターの一部の値を固定します。BK が固定で、A の非ゼロのエントリのみが推定可能になるようにモデルを構成します。

init_sys.Structure.A.Free = (A~=0);
init_sys.Structure.B.Free = false;
init_sys.Structure.K.Free = false;

init_sys.Structure.A.Free のエントリにより、init_sys.A 内の対応するエントリが自由 (true) か固定 (false) かが決定されます。

測定されたデータを読み込み、init_sys で指定されたパラメーター制約および初期値を使用して状態空間モデルを推定します。

load sdata2 tt2;
sys = ssest(tt2,init_sys);

sys の推定されたパラメーターは、init_sys で指定された制約を満たします。

入力引数

すべて折りたたむ

入力チャネルと出力チャネルを表す変数を含んでいる等間隔サンプルの timetable として、または、複数実験データの場合は timetable の cell 配列として指定します。

timetable 全体の使用

tt 内のすべての変数を入力チャネルまたは出力チャネルとして使用し、一連の入力チャネル変数の後に一連の出力チャネル変数が続くように変数が構成されている場合、次のようになります。

  • SISO システムの場合は、tt を Ns 行 2 列の timetable として指定します。Ns はサンプルの数で、2 つの timetable 変数はそれぞれ測定された入力チャネルと出力チャネルを表します。

  • MIMO システムの場合、tt を Ns 行 (Nu+Ny) 列の timetable として指定します。Nu は入力の数、Ny は出力の数です。最初の Nu 個の変数には入力チャネルが含まれ、残りの Ny 個の変数には出力チャネルが含まれなければなりません。

    状態空間モデルまたは伝達関数モデルを推定している場合は、次の節で説明されているように、入力チャネルと出力チャネルも明示的に指定しなければなりません。

  • 複数実験データの場合は、データを timetable の Ne 行 1 列の cell 配列として指定します。Ne は実験数です。すべての実験のサンプル時間が一致していなければなりません。

timetable から選択した変数の使用

使用可能なチャネルのサブセットのみを使用する場合、入力チャネルおよび出力チャネルの変数が混在している場合、MIMO 空間状態モデルまたは伝達関数モデルを推定している場合など、入力チャネルと出力チャネルを明示的に特定する場合は、'InputName' および 'OutputName' の名前と値の引数を使用して、入力および出力として使用する変数を指定します。

たとえば、tt に 6 つのチャネル変数 "u1""u2""u3"、および "y1""y2""y3" が含まれているとします。変数 "u1""u2" を入力、変数 "y1""y3" を出力として推定に使用します。推定を実行するには、次のコマンドを使用します。

sys = ssest(tt,__,'InputName',["u1" "u2"],'OutputName',["y1" "y3"])

timetable を使用した時系列モデルの推定

入力/出力モデルではなく時系列モデルを推定する場合は、tt からの出力変数のみを使用します。必要な出力変数のみを含める tt を指定できます。または、tt に入力変数も含まれる場合は tt から出力変数を抽出できます。指定方法は、入力/出力モデルの推定の場合と似ています。

  • 単出力システムの場合、tt を Ns 行 1 列の timetable として指定します。

  • 多変量システムの場合、tt を Ns 行 (Ny) 列の timetable として指定します。tt 内のすべての変数を使用する予定である場合も、それらの変数が入力変数と解釈されないように、'OutputName' の名前と値の引数を使用してそれらの変数をすべて指定する必要があります。

使用する変数以外の変数 (入力変数、追加の出力変数など) も含まれる timetable tt の場合は、使用する出力変数を指定するのに加え、'InputName' に空の配列を指定します。

たとえば、tt に 6 つの変数 "u1""u2""u3"、および "y1""y2""y3" が含まれているとします。出力変数 "y3" および "y1" を時系列推定に使用します。推定を実行するには、次のコマンドを使用します。

sys = ssest(tt,__,'OutputName',["y1" "y3"],'InputName',[])

推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。

推定データ。SISO システムの場合は、等間隔でサンプリングされた入力および出力時間領域信号値を含む、Ns 行 1 列の実数値行列のコンマ区切りのペアとして指定します。ここで、Ns はサンプルの数です。

MIMO システムの場合は、u,y を、以下の次元をもつ入力行列と出力行列のペアとして指定します。

  • u — Ns 行 Nu 列の行列。Nu は入力の数です。

  • y — Ns 行 Ny 列の行列。Ny は出力の数です。

複数実験データの場合は、u,y を 1 行 Ne 列の cell 配列のペアとして指定します。Ne は実験数です。すべての実験のサンプル時間が一致していなければなりません。

出力のみを含み、入力を含まない時系列データの場合は、[],y を指定します。

制限

  • 行列ベースのデータは、周波数領域データからの推定をサポートしません。iddata オブジェクトや idfrd オブジェクトなどのデータ オブジェクト (data を参照) を使用する必要があります。

  • 推定データはサンプル時間を提供しないため、連続時間推定では推定データに行列を使用することは推奨されません。データは 1 Hz でサンプリングされると仮定されます。連続時間推定の場合、各行列を timetable に変換することが推奨されます。たとえば、行列 um および ym をサンプル時間が 0.5 分の timetable tt に変換するには、次のコマンドを使用します。

    tt = timetable(um,ym,'rowtimes',minutes(0.5*(1:size(u,1))))
    行列ベースの SISO データを timetable に変換する詳細な例については、timetable への SISO 行列データの変換を参照してください。MIMO 行列のペアを timetable に変換する例については、連続時間モデルを推定するために MIMO 行列データを timetable に変換を参照してください。

    推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。

推定データ オブジェクト。iddata オブジェクト、frd オブジェクト、または等間隔にサンプリングされた入力値と出力値を含む idfrd オブジェクトとして指定します。既定では、モデルのサンプル時間は推定データのサンプル時間に設定されます。

複数実験データの場合、すべての実験のサンプル時間とサンプル間動作が一致していなければなりません。

時間領域の推定の場合、data は入力信号と出力信号の値を含む iddata オブジェクトでなければなりません。

周波数領域の推定の場合、data は次のいずれかになります。

  • 記録された周波数応答データ (frd (Control System Toolbox) または idfrd)

  • プロパティが次のように指定された iddata オブジェクト:

    • InputData — 入力信号のフーリエ変換

    • OutputData — 出力信号のフーリエ変換

    • Domain'Frequency'

制限

離散時間周波数領域データを使用して連続時間モデルを推定することはできません。

推定モデルの次数。非負の整数、または正の整数の範囲を含むベクトルとして指定します。

  • 推定モデルの目的の次数が既にわかっている場合は、nx をスカラーとして指定します。

  • 推定モデルの最も効果的な次数を選択するために可能性がある次数の範囲を比較する場合は、その範囲を nx に指定します。ssest により、システムにおけるそれぞれの状態の相対的なエネルギーの寄与を示すハンケル特異値のプロットが作成されます。ハンケル特異値が比較的小さい状態は、モデルの精度にほとんど寄与せず、破棄しても影響はほとんどありません。維持する状態のうちで最も高い状態のインデックスがモデル次数になります。プロット ウィンドウには、使用する次数の提案も示されます。この提案を受け入れることも、別の次数を入力することもできます。例については、推定による最適なモデル次数の特定を参照してください。

    nx を指定しない場合、または nxbest と指定した場合、範囲 1:10 から nx が自動的に選択されます。

  • 静的システムを同定する場合は、nx0 に設定します。

推定オプション。ssestOptions オプション セットとして指定します。opt で指定するオプションには以下が含まれます。

  • 推定の目的

  • 初期条件の処理

  • 正則化

  • 推定に使用する数値探索手法

  • サンプル間動作

opt の使用方法を示す例については、独立パラメーターとしての初期状態の推定および正則化を使用した状態空間モデルの推定を参照してください。

sys の初期パラメーター化を構成する線形システム。idss モデルまたは構造体として指定します。init_sys は、測定データを使用した推定を実行して取得するか、直接構築して取得します。

init_sysidss モデルの場合、ssestinit_sys のパラメーター値を sys の推定の初期推定として使用します。idss を指定する方法については、Estimate State-Space Models with Structured Parameterizationを参照してください。ssest は、固定係数や最小/最大境界など、init_sys のパラメーターに対する制約を適用します。

init_sysStructure プロパティを使用して、A、B、C、D、および K の各行列の初期パラメーター値と制約を構成します。以下に例を示します。

  • init_sys の A 行列の初期推定を指定するには、init_sys.Structure.A.Value を初期推定として設定します。

  • init_sys の B 行列に対する制約を指定するには、次のように設定します。

    • init_sys.Structure.B.Minimum を最小の B 行列値に設定します。

    • init_sys.Structure.B.Maximum を最大の B 行列値に設定します。

    • init_sys.Structure.B.Free を設定して、B 行列のエントリが推定の自由パラメーターかどうかを示します。

    係数の相互依存関係など、さらに複雑な制約を設定するには、greyest および idgrey を使用してグレー ボックス推定を使用します。

すべての行列パラメーターで有限の初期値を割り当てる必要があります。

init_sys が状態空間 (idss) モデルでない場合、最初に init_sysidss モデルに変換されます。ssest は、結果のモデルのパラメーターを推定の初期推定として使用します。

opt を指定せず、init_sys が推定で取得されたものである場合、init_sys.Report.OptionsUsed からの推定オプションが使用されます。

例については、構造化推定を使用した部分的に既知の状態空間モデルの推定を参照してください。

名前と値の引数

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

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

例: sys = ssest(data,nx,'Ts',0.1)

入力チャネル名。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。

データ ソースに timetable を使用している場合は、InputName の名前は timetable 変数のサブセットでなければなりません。

例: sys = ssest(tt,__,'InputName',["u1" "u2"]) は、推定で使用する timetable tt からの入力チャネルとして変数 u1 および u2 を選択します。

出力チャネル名。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。

データ ソースに timetable を使用している場合は、OutputName の名前は timetable 変数のサブセットでなければなりません。

例: sys = ssest(tt,__,'OutputName',["y1" "y3"]) は、推定で使用する timetable tt からの出力チャネルとして変数 y1 および y3 を選択します。

推定モデルのサンプル時間。'Ts'0 または正のスカラーのいずれかで構成されるコンマ区切りのペアとして指定します。

  • 連続時間モデルの場合、'Ts'0 と指定します。

  • 離散時間モデルの場合、'Ts' を次のように定義される単位でデータ サンプル時間として指定します。

    • timetable ベースのデータ — timetable Time

    • 行列ベースのデータ — 秒

    • データ オブジェクト (iddata オブジェクトなど) — data.TimeUnit プロパティ

timetable tt のデータのサンプル時間を取得するには、timetable プロパティ tt.Properties.Timestep を使用します。

各入力チャネルの入力遅延。'InputDelay' と数値ベクトルで構成されるコンマ区切りのペアとして指定します。

  • 連続時間モデルの場合、timetable、データ オブジェクトの TimeUnit プロパティに格納された時間単位または秒単位 (行列データの場合) で 'InputDelay' を指定します。

  • 離散時間モデルの場合、サンプル時間 Ts の整数倍で 'InputDelay' を指定します。たとえば、'InputDelay'3 に設定すると、3 サンプリング周期の遅延が指定されます。

Nu 個の入力があるシステムの場合、InputDelay を Nu 行 1 列のベクトルに設定します。このベクトルの各エントリは、対応する入力チャネル用の入力遅延を表す数値です。例については、入力遅延をもつ状態空間モデルの同定を参照してください。

すべてのチャネルに同じ遅延を適用するには、InputDelay をスカラーとして指定します。

sys の正準形のタイプ。'Form' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'free' — 行列 A、B、C、D、および K のすべてのエントリが自由なものとして扱われます。

  • 'modal'sys をモード形式で取得します。

  • 'companion'sys をコンパニオン形式で取得します。

  • 'canonical'sys を可観測性の正準形で取得します。

正準形の定義については、状態空間実現を参照してください。

詳細については、Estimate State-Space Models with Canonical Parameterizationを参照してください。例については、形式、直達、外乱モデルの行列の変更を参照してください。

入力から出力への直達。'Feedthrough' と長さ Nu の logical ベクトルで構成されるコンマ区切りのペアとして指定します。Nu は入力の数です。Feedthrough を logical スカラーとして指定すると、その値がすべての入力に適用されます。静的システムの場合、'Feedthrough' は常に 1 であると仮定されます。

例については、形式、直達、外乱モデルの行列の変更を参照してください。

K 行列で時間領域のノイズ成分のパラメーターを推定するオプション。'DisturbanceModel' と次の値のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'estimate' — ノイズ成分を推定します。K 行列は自由パラメーターとして扱われます。

  • 'none' — ノイズ成分を推定しません。K 行列の要素はゼロで固定されます。

周波数領域データの場合、'DisturbanceModel''none' であるものと仮定されます。

例については、形式、直達、外乱モデルの行列の変更を参照してください。

出力引数

すべて折りたたむ

同定された状態空間モデル。idss モデルとして返されます。このモデルは、指定したモデル次数、遅延、および推定オプションを使用して作成されます。

推定結果と使用されたオプションに関する情報は、モデルの Report プロパティに格納されます。Report には次のフィールドがあります。

Report のフィールド説明
Status

モデルのステータスの概要。モデルが構築によって作成されたものか推定によって取得されたものかを示します。

Method

使用された推定コマンド

InitialState

推定時の初期状態の処理方法。次の値のいずれかとして返されます。

  • 'zero' — 初期状態をゼロに設定。

  • 'estimate' — 初期状態を独立した推定パラメーターとして処理。

  • 'backcast' — 初期条件を最適な最小二乗近似を使用して推定。

  • 長さ Nx の列ベクトル。ここで、Nx は状態の数です。複数実験データの場合は、Ne 列の行列。ここで、Ne は実験数です。

  • idpar を使用して作成されたパラメトリック初期状態オブジェクト (x0obj)。離散時間状態空間モデルの場合のみ。

このフィールドは、推定オプション セットで InitialState オプションが 'auto' に設定されている場合に特に便利です。

N4Weight

N4SID アルゴリズムで特異値分解に使用された重み付けスキーム。次の値のいずれかとして返されます。

  • 'MOESP' — MOESP アルゴリズムを使用。

  • 'CVA' — 正準変量アルゴリズムを使用。

  • 'SSARX' — 部分空間同定法で ARX の推定に基づくアルゴリズムを使用して重み付けを計算。

このオプションは、推定オプション セットで N4Weight オプションが 'auto' に設定されている場合に特に便利です。

N4Horizon

N4SID アルゴリズムで使用された前方および後方の予測範囲。3 要素の行ベクトル [r sy su] として返されます。ここで、r は前方予測範囲、sy は予測に使用された過去の出力の数、su は予測に使用された過去の入力の数です。

Fit

推定の定量的評価。構造体として返されます。これらの品質メトリクスの詳細については、Loss Function and Model Quality Metricsを参照してください。構造体には、以下のフィールドがあります。

  • FitPercent — 正規化平方根平均二乗誤差 (NRMSE)。モデルの応答が推定データにどの程度適合するかをパーセンテージで示す尺度で、fitpercent = 100(1-NRMSE) として表されます。

  • LossFcn — 推定完了時の損失関数の値

  • MSE — 平均二乗誤差 (MSE)。モデルの応答が推定データにどの程度適合するかを示す尺度です。

  • FPE — モデルの最終予測誤差

  • AIC — 生の赤池情報量基準 (AIC)。モデルの品質を示す尺度です。

  • AICc — 小さいサンプルサイズの補正された AIC

  • nAIC — 正規化された AIC

  • BIC — ベイズ情報量基準 (BIC)

Parameters

モデル パラメーターの推定値

OptionsUsed

推定に使用されたオプション セット。これは、カスタム オプションを構成していない場合は既定のオプションのセットになります。詳細については、ssestOptions を参照してください。

RandState

推定開始時の乱数ストリームの状態。推定時にランダム化が使用されなかった場合は空 [] になります。詳細については、rng を参照してください。

DataUsed

推定に使用されたデータの属性。次のフィールドをもつ構造体。

フィールド説明
Name

データ セットの名前。

Type

データ型。

Length

データ サンプルの数。

Ts

サンプル時間。これは、Data.Ts と等価です。

InterSample

入力サンプル間動作。次の値のいずれかになります。

  • 'zoh' — ゼロ次ホールドにより、サンプル間で区分的に一定な入力信号を維持。

  • 'foh' — 1 次ホールドにより、サンプル間で区分的に線形な入力信号を維持。

  • 'bl' — 帯域幅を制限した動作により、ナイキスト周波数を超える連続時間入力信号のパワーがゼロになるように指定。

Intersample の値は離散時間モデルの推定結果には影響しません。

InputOffset

推定時に時間領域の入力データから削除されたオフセット。

OutputOffset

推定時に時間領域の出力データから削除されたオフセット。

Termination

予測誤差の最小化に使用された反復探索の終了条件。次のフィールドを含む構造体として返されます。

  • WhyStop — 数値探索を終了する理由

  • Iterations — 推定アルゴリズムで実行された探索の反復回数

  • FirstOrderOptimality — 探索アルゴリズムが終了したときの勾配探索ベクトルの ノルム

  • FcnCount — 目的関数が呼び出された回数

  • UpdateNorm — 最後の反復における勾配探索ベクトルのノルム。探索法が 'lsqnonlin' または 'fmincon' の場合は省略されます。

  • LastImprovement — 最後の反復における基準改善。パーセンテージで表されます。探索法が 'lsqnonlin' または 'fmincon' の場合は省略されます。

  • Algorithm'lsqnonlin' または 'fmincon' の探索法で使用されるアルゴリズム。他の探索法が使用されている場合は省略されます。

数値探索の最適化を必要としない推定法の場合、Termination フィールドは省略されます。

Report の使用の詳細については、Estimation Reportを参照してください。

推定時に計算された初期状態。各実験に対応する列ベクトルを含む配列として返されます。

この配列は、モデルの Report プロパティの Parameters フィールドにも格納されます。

例については、独立パラメーターとしての初期状態の推定を参照してください。

アルゴリズム

ssest は、非反復の部分空間法または反復の有理関数推定法のいずれかを使用して、パラメーター推定を初期化します。その後、予測誤差最小化法を使用してパラメーター値を調整します。詳細については、pem および ssestOptions を参照してください。

参照

[1] Ljung, L. System Identification: Theory for the User, Second Edition. Upper Saddle River, NJ: Prentice Hall PTR, 1999.

バージョン履歴

R2012a で導入

すべて展開する