Main Content

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

compare

同定されたモデル出力を測定出力と比較する

説明

シミュレートされた出力および測定出力のプロット

compare(data,sys) は、単一の動的システム モデル sys または動的システム モデルの配列の応答をシミュレートし、data に含まれている入出力測定データのプロットの上に各モデルの応答を重ね合わせます。data は timetable、コンマ区切りの入出力行列ペア、またはデータ オブジェクト (iddata オブジェクトや idfrd オブジェクトなど) にすることができます。

プロットでは、シミュレートされた応答と出力測定データ間の適合度を示す、正規化された平方根平均二乗 (NRMSE) の測定値も表示されます。

この関数を使用するのは、単一のモデルを検証する場合、または同じ測定データから同定された一連のモデル候補を評価する場合です。

timetable およびデータ オブジェクトの場合、compare は、sys 内のチャネル名に基づいて入出力チャネルを突き合わせ、一致しないチャネルを無視します。

compare(data,LineSpec) は、モデル応答のライン タイプ、マーカー記号、および色も指定します。

compare(data,sys1,...,sysN) は同じ座標軸で複数の動的システムの応答を比較します。compare はラインの仕様を自動的に選択します。

compare(data,sys1,LineSpec1,...,sysN,LineSpecN) は、各システムに対して指定されたライン タイプ、マーカー記号、および色を使用して同じ座標軸で複数のシステムの応答を比較します。

モデルの出力の予測

compare(___,kstep) は、kstep で指定した予測範囲を使用して sys の応答を予測します。予測では出力測定値および入力測定値を使用して将来の応答を予想します。kstep は各出力測定値の時間点と結果の予測応答の時間点間の時間サンプルの数を表します。

予測の詳細については、Simulate and Predict Identified Model Outputを参照してください。この構文は、前述の任意の入出力の組み合わせで使用できます。

追加のオプションの指定

compare(___,opt) は、オプション セットを使用して比較を構成します。オプションには、初期状態処理、データ オフセット、およびデータ選択があります。

結果を返す

[ymod,fit,ic] = compare(___) はモデル応答 ymod、適合度値 fit、および初期状態 ic を返します。この構文は、プロットを生成しません。したがって、ライン仕様はすべて無視されます。

すべて折りたたむ

線形モデルを同定し、生成元のデータを使用して、シミュレートされたモデル応答を可視化します。

tt1 の入出力測定値を読み込み、3 次状態空間モデル sys を同定します。

load sdata1 tt1;
sys = ssest(tt1,3);

sys は、連続時間で同定された状態空間 (idss) モデルです。

compare を使用して sys 応答をシミュレートし、tt1 のデータと一緒にプロットします。

figure
compare(tt1,sys)

Figure contains an axes object. The axes object with ylabel y contains 2 objects of type line. These objects represent Validation data (y), sys: 70.56%.

プロットでは、モデル応答と元のデータの差が示されます。凡例に示されているパーセントは NRMSE 適合値です。これは、予測モデル出力とデータの一致度を表します。

プロットの表示オプションを変更するには、プロットを右クリックしてコンテキスト メニューにアクセスします。以下に例を示します。

  • 予測出力と測定出力間の誤差をプロットするには、[誤差プロット] を選択します。

  • シミュレートした応答の信頼領域を表示するには、[特性][信頼領域] を選択します。

  • プロットする標準偏差の数を指定するには、[プロパティ エディター] ダイアログ ボックスを開きます。[オプション] タブで、[同定されたモデルの信頼領域] に標準偏差の数を指定します。既定値は 1 標準偏差です。

線形モデルを同定し、計算元のデータを使用して、予測モデル応答を可視化します。

umat1 および ymat1 の入出力測定値を使用して、3 次状態空間モデルを同定します。

load sdata1 umat1 ymat1 Ts
sys = ssest(umat1,ymat1,3,'Ts',Ts);

sys は、離散時間で同定された状態空間 (idss) モデルです。

今度は、compare を使用して予測応答をプロットします。予測は、システム応答の計算時に測定入力と測定出力の両方を使用する点でシミュレーションと異なります。予測範囲は、現在の測定出力点を基準としてどのくらい先の未来まで予測するのかを定義します。この例では、予測範囲 kstep を 10 ステップに設定し、compare を使用して元の測定データに対して予測応答をプロットします。

kstep = 10;
compare(umat1,ymat1,sys,kstep)

Figure contains an axes object. The axes object with ylabel y1 contains 2 objects of type line. These objects represent Validation data (y1), sys: 70.8%.

このプロットでは、各 sys データ点は、10 ステップ以上前に取られた出力測定データに関連した予測出力を表します。たとえば、t = 15s の点は、t = 5s 以前に取られた出力測定値に基づいています。この t = 15s の sys データ点の計算では、シミュレーションと同様に t = 15s までの入力測定値も使用します。

プロットでは、モデル応答と元のデータの差が示されます。凡例に示されているパーセントは NRMSE 適合値です。これは、予測モデルの出力とデータの一致度を表します。

プロットの表示オプションおよびシミュレーション オプションを変更するには、プロットを右クリックしてコンテキスト メニューにアクセスします。たとえば、予測出力と測定出力間の誤差をプロットするには、コンテキスト メニューから [誤差プロット] を選択します。予測範囲の値を変更する場合、またはシミュレーションと予測を切り替える場合は、コンテキスト メニューから [予測範囲] を選択します。

同じデータの複数のモデル タイプを同定し、結果を比較してデータに最も適合するモデル タイプを確認します。

単一の入出力が含まれている iddata オブジェクトの z1 を含むデータを読み込みます。

load iddata1;

z1 から、以下の各線形形式のモデルを同定します。

  • むだ時間が 0 の、次数 2、3、および 1 の ARMAX (idpoly)

  • 3 つの状態をもつ状態空間 (idss)

  • 3 つの極をもつ伝達関数 (idtf)

sys_armax = armax(z1,[2 3 1 0]);
sys_ss = ssest(z1,3);
sys_tf = tfest(z1,3);

compare によって z1 を使用して 3 つのモデルのシミュレートされた応答をプロットします。

compare(z1,sys_armax,sys_ss,sys_tf)

Figure contains an axes object. The axes object with ylabel y1 contains 4 objects of type line. These objects represent Validation data (y1), sys\_armax: 70.27%, sys\_ss: 70.56%, sys\_tf: 70.96%.

この一連のデータでは、すべてのモデルの既定の設定とともに使用して、伝達関数形式の NRMSE 適合度が最良になっています。ただし、どのモデル同士の適合度の差も約 1% 以内に収まっています。

プロットを右クリックし、[システム] の上にカーソルを合わせることで、プロットに表示されるモデル応答を対話的に制御できます。

異なるタイプの複数の推定モデルの出力を測定周波数領域データと比較します。

この例では、周波数応答データからプロセス モデルおよび出力誤差多項式を推定します。

load demofr  % frequency response data
zfr = AMP.*exp(1i*PHA*pi/180);  
Ts = 0.1;
data = idfrd(zfr,W,Ts);  
sys1 = procest(data,'P2UDZ'); 
sys2 = oe(data,[2 2 1]);

idproc モデルの sys1 は連続時間プロセス モデルです。idpoly モデルの sys2 は離散時間出力誤差モデルです。

推定モデルの周波数応答をデータと比較します。

compare(data,sys1,'g',sys2,'r');

Figure contains 2 axes objects. Axes object 1 with title From: u1, ylabel To: y1 contains 3 objects of type line. These objects represent Data, sys1: 88.04%, sys2: 88.04%. Axes object 2 with ylabel To: y1 contains 3 objects of type line. These objects represent Data, sys1: 88.04%, sys2: 88.04%.

2 つのモデルの NRMSE 適合値は、計算元のデータを基準としてほぼ同等です。

推定モデルを測定データと比較する際の既定の動作を変更します。

測定データの伝達関数を推定します。

load sdata1 tt1;
sys = tfest(tt1,3);

sys は、連続時間で同定された伝達関数 (idtf) モデルです。

初期状態をゼロにするとします。compare の既定ではデータから初期状態を推定します。

初期状態処理を指定するオプション セットを作成します。初期状態でゼロを使用するには、'InitialCondition' オプションに 'z' を指定します。

opt = compareOptions('InitialCondition','z');

比較オプション セットを使用して、推定された伝達関数モデルの出力を測定データと比較します。

compare(tt1,sys,opt)

Figure contains an axes object. The axes object with ylabel y contains 2 objects of type line. These objects represent Validation data (y), sys: 70.66%.

データを読み込みます。

load iddata2 z2

データを推定セットと検証セットに分けます。

z2e = z2(1:200);
z2v = z2(201:400);
idplot(z2e,z2v)

Figure contains 2 axes objects. Axes object 1 with title y1 contains 2 objects of type line. These objects represent z2e, z2v. Axes object 2 with title u1 contains 2 objects of type line. These objects represent z2e, z2v.

推定データを使用して状態空間モデルおよび伝達関数モデルを推定します。

sys_ss = ssest(z2e,2);
sys_tf = tfest(z2e,2,1);

compare を使用して sys_ss の初期状態 ic_ss を取得します。

[y_ss,fit_ss,ic_ss] = compare(z2e,sys_ss);
ic_ss
ic_ss = 2×1

   -0.0018
    0.0016

ic_ss は初期状態の数値ベクトルです。

compare を使用して sys_tf の初期状態 ic_tf を取得します。

[y_tf,fit_tf,ic_tf] = compare(z2e,sys_tf);
ic_tf
ic_tf = 
  initialCondition with properties:

     A: [2x2 double]
    X0: [2x1 double]
     C: [-1.6093 5.1442]
    Ts: 0

ic_tf は、状態空間形式で初期状態に対する sys_tf の自由応答のモデルを含む initialCondition オブジェクトです。A および C には自由応答情報が含まれ、X0 には初期状態が含まれます。

ここで、検証データを使用して両方のモデルの初期状態を同時に取得します。

[y_sstf,fit_sstf,ic_sstf] = compare(z2v,sys_ss,sys_tf);
ic_sstf
ic_sstf=2×1 cell array
    {2x1 double          }
    {1x1 initialCondition}

ic_sstf は、sys_ss の初期状態ベクトルおよび sys_tfinitialCondition オブジェクトを含む cell 配列です。

compare は、任意の測定データ セットを使用して既存のモデルの初期状態を提供できます。

入力引数

すべて折りたたむ

検証データ。timetable、コンマ区切りの行列ペア、cell 配列、またはデータ オブジェクトとして指定します。data の指定はデータ型によって異なります。

timetable

SISO、MISO、および MIMO の各システムでは、一定間隔の時間ベクトルを使用する timetable として data を指定します。timetable データ型では、data には、入出力チャネルを表す変数が含まれます。

data には、各モデル sys の推定に使用した元のデータと同じ変数名が含まれている必要があります。モデル プロパティには、入出力変数の名前が含まれます。したがって、timetable で使用するチャネルを明示的に指定する必要はありません。

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

行列

SISO、MISO、および MIMO の各システムでは、入力行列の次元が Ns 行 Nu 列の行列と、出力行列の次元が Ns 行 Ny 列の行列のペアとしてデータを指定する必要があります。sysTs プロパティに含まれているサンプル周期が使用されます。

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

データ オブジェクト

iddata モデル オブジェクト、idfrd モデル オブジェクト、または frd モデル オブジェクトとしてデータを指定します。

動作は sys により異なります。

  • idss などのパラメトリック モデルの場合は、dataiddata モデル オブジェクト、idfrd モデル オブジェクト、または frd モデル オブジェクトにすることができます。

  • 周波数応答データ モデル (idfrd または frd モデル オブジェクト) の場合は、data も周波数応答データ モデルでなければなりません。

  • iddata オブジェクトの場合は、data は、領域、実験数、および時間または周波数ベクトルが一致している iddata オブジェクトでなければなりません。

たとえば、以下を参照してください。

.

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

同定されたモデル。動的システム モデルiddata オブジェクト、またはモデル配列として指定します。

data の時間単位または周波数単位が sys の単位に一致していない場合、comparedata の単位に合わせて sys を再スケーリングします。

予測範囲。次のいずれかとして指定します。

  • Infsys のシミュレートされた応答を data と比較します。

  • 有限な正の整数 — sys の予測応答を data と比較します。各予測応答点は、当該時間点までの測定入力データだけでなく、kstep 時間点前までの測定出力データにも基づきます。

compare は、sysiddata オブジェクト、FRD モデル、またはノイズ成分のない動的システムである場合、kstep を無視します。compare は、周波数応答検証データの使用時にも kstep を無視します。

データ サンプル数より大きい kstep を指定した場合、comparekstepInf に設定し、警告メッセージを示します。

シミュレーションおよび予測の詳細については、Simulate and Predict Identified Model Outputを参照してください。

例については、同定された時間領域モデルの予測応答と測定データの比較を参照してください。

ライン スタイル、マーカー、およびラインとマーカーの両方の色。'b''b+:' など、文字ベクトルとして指定します。

LineSpec の構成の詳細については、plotLinespec 入力引数を参照してください。例については、複数の推定モデルと測定周波数領域データの比較を参照してください。

比較オプション。compareOptions を使用して作成したオプション セットとして指定します。

使用できるオプションは、次のとおりです。

  • 初期条件の処理

  • 適合の数値を計算するサンプル範囲

  • データのオフセット

  • 出力の重み付け

たとえば、以下を参照してください。

出力引数

すべて折りたたむ

モデル応答。timetable、行列、iddata オブジェクト、idfrd オブジェクト、cell 配列、または配列として返されます。出力タイプは、以下のように、指定したモデルおよびデータによって異なります。

  • 単一のモデルおよび単一実験データ セットの場合は、ymodtimetable、行列、iddata オブジェクト、または idfrd オブジェクトです。

  • 複数モデルの比較の場合は、ymod は、入力モデルごとに 1 つの timetable、行列、iddata オブジェクト、または idfrd オブジェクトのエントリを含む cell 配列です。

  • 複数実験データの場合、ymod は、実験ごとに 1 つのエントリを含む cell 配列です。

  • 複数実験データを使用した複数モデルの比較の場合、ymod は Nsys 行 Nexp 列の cell 配列です。ここで、Nsys はモデルの数、Nexp は実験の数です。

  • sys がモデル配列である場合、ymod は、sys の各モデルおよび data の実験に対応する要素をもつ配列です。モデル配列の詳細については、stack を参照してください。

kstep が指定されていないか Inf である場合は、compareymod でシミュレートされた応答を返します。

それ以外の場合は、compare は予測応答を返します。時間 tn-kstep までの data 内の測定出力値が、時間 tn における sys の出力の予測に使用されます。シミュレーションおよび予測の詳細については、Simulate and Predict Identified Model Outputを参照してください。

compare での応答の計算には、初期状態処理の仕様が必要です。既定では、compare はデータへの適合度を最大化するために初期状態を推定します。使用する初期状態を compare が決定する方法の詳細については、compareOptions を参照してください。

シミュレートされたモデル応答または予測モデル応答と測定データの一致度を示す NRMSE 適合値インジケーター。ベクトル、行列、または cell 配列として返されます。出力は、以下のように、指定したモデルおよびデータによって異なります。

  • dataiddata オブジェクトの場合、fit は長さが Ny のベクトルです。Ny は出力の数です。

  • data が FRD モデルの場合は、fit は Ny 行 Nu 列の行列です。ここで、Nudata の入力数です。

  • 単一のモデルおよび単一実験データ セットの場合は、fit はベクトルまたは行列です。

  • 複数モデルの比較の場合は、fit は、入力モデルごとに 1 つのエントリを含む cell 配列です。

  • 複数実験データの場合、fit は、実験ごとに 1 つのエントリを含む cell 配列です。

  • 複数実験データを使用した複数モデルの比較の場合、fit は Nsys 行 Nexp 列の cell 配列です。ここで、Nsys はモデルの数、Nexp は実験の数です。

  • sys がモデル配列である場合、fit は、sys の各モデルおよび data の実験に対応する要素をもつ配列です。

compare は以下を使用して fit (パーセント) を計算します。

fit=100(1||yy^||||ymean(y)||),

ここで、y は検証データ出力、y^sys の出力です。

FRD モデルの場合 — compare は複素数周波数応答を比較して fit を計算します。compare プロットに示される振幅および位相曲線の適合は、compare によって別個に計算されません。

システム応答の計算に使用した初期状態。空の配列、ベクトル、initialCondition オブジェクト、または cell 配列として返されます。

単一のモデルおよび単一実験データの場合、出力の形式はモデル タイプによって異なります。

  • 状態空間モデルの場合、ic は初期状態を含む数値ベクトルです。

  • 伝達関数および多項式モデルの場合、icinitialCondition オブジェクトです。initialCondition は、推定される初期状態 (x0) に対するモデルの自由応答 (行列 A および C) を状態空間形式で表します。

  • sysfrd または iddata オブジェクトの場合、これらのオブジェクトでは初期状態を使用できないため、ic は空の配列 [] です。

複数のモデル/実験の場合、出力の形式は以下のとおりです。

  • 複数モデルの比較の場合は、ic は、入力モデルごとに 1 つのベクトル、行列、または initialCondition のエントリを含む cell またはオブジェクト配列です。

  • 複数実験データの場合、ic は、実験ごとに 1 つのエントリを含む cell またはオブジェクト配列です。

  • 複数実験データを使用した複数モデルの比較の場合、ic は Nsys 行 Nexp 列の cell またはオブジェクト配列です。ここで、Nsys はモデルの数、Nexp は実験の数です。

  • sys がモデル配列である場合、ic は、sys の各モデルおよび data の実験に対応する要素をもつ配列です。

既定では、comparefindstates を使用して ic の初期状態を推定します。この動作を変更するには、opt'InitialCondition' オプションを設定します (compareOptions を参照)。開始点の直前に入出力履歴がある場合、'InitialCondition' をその履歴データに設定できます。その場合、comparedata2state を使用して履歴データの終了状態を計算し、それによってシミュレーションの開始状態を決定します。他の選択肢としては、初期状態をゼロや、以前に判別した特定の値に設定できます。初期状態の検出の詳細については、Estimate Initial Conditions for Simulating Identified Modelsを参照してください。

状態を明示的に使用しない推定モデルを使用している場合、compare はまずモデルをその状態空間表現に変換してから、データを初期状態にマッピングします。その後、compare は初期状態ベクトルと A および C 状態空間行列を 1 つの initialCondition オブジェクトにパッケージ化します。そのようなモデルで compare を使用する例については、初期条件の取得を参照してください。

ヒント

  • compare で取得した NRMSE 適合結果は、モデル同定でレポートされた適合値に正確に一致しないことがあります。この差は通常、初期状態の不一致、および同定用と検証用の予測範囲の既定値の差が原因で生じます。差は通常小さいため、モデルの選択および検証のワークフローに影響しません。詳細については、Resolve Fit Value Differences Between Model Identification and compare Commandを参照してください。

  • compare は、チャネル名に基づいて data および sys の入出力チャネルを突き合わせます。したがって、data で使用可能なすべての入力チャネルを使用しないモデルを評価できます。この柔軟性により、異なる一連の入出力チャネルからそれぞれが独立して同定された複数のモデルを比較できます。

  • compare のプロットでは、主要なパラメーターを変更できます。たとえば、以下を対話的に制御できます。

    • シミュレートされた応答または予測応答のいずれを生成するのか

    • 予測範囲値

    • 初期状態処理

    • 表示する実験データ

    • 表示するシステム モデル

    制御にアクセスするには、プロットを右クリックしてオプション メニューを表示します。

バージョン履歴

R2006a で導入

すべて展開する