Main Content

arxstruc

単出力 ARX モデルの損失関数の計算

構文

V = arxstruc(ze,zv,NN)

引数

ze

推定データ セットとして、iddata オブジェクトまたは idfrd オブジェクトを指定できます。

zv

検証データ セットとして、iddata オブジェクトまたは idfrd オブジェクトを指定できます。

NN

各種の ARX モデル構造の数を行列として定義します。NN の各行の形式は次のとおりです。

nn = [na nb nk]

説明

メモ

arxstruc は単出力システムにのみ使用します。arxstruc は単入力と多入力の両方のシステムをサポートします。

V = arxstruc(ze,zv,NN) は、最初の行に損失関数が格納された V を返します。V の残りの行には、次数と遅延が対応する損失関数のすぐ下になるようにして NN の転置が格納されます。V の最後の列に ze のデータ点の数が格納されます。

出力引数 V の解析には selstruc を使用するのが最適です。v の情報に基づく最適なモデル構造の選択には、通常は selstruc が使用されます。

すべて折りたたむ

データ生成用の ARX モデルを作成します。

A = [1 -1.5 0.7];
B = [0 1 0.5];
m0 = idpoly(A,B);

乱数入力信号と加法性ノイズ信号を生成します。

u = iddata([],idinput(400,'rbs'));
e = iddata([],0.1*randn(400,1));

定義した入力信号と誤差信号を使用してモデルの出力をシミュレートします。

y = sim(m0,[u e]);
z = [y,u];

推定用のモデル次数の組み合わせを生成します。すべてのモデルに 1 の遅延を指定し、nanb15 の範囲のモデル次数を指定します。

NN = struc(1:5,1:5,1);

ARX モデルを推定し、それぞれのモデル次数の組み合わせについて損失関数を計算します。入力データが推定と検証のデータ セットに分割されます。

V = arxstruc(z(1:200),z(201:400),NN);

検証データに最もよく適合するモデル次数を選択します。

order = selstruc(V,0);

選択された次数の ARX モデルを推定します。

M = arx(z,order);

推定と検証のデータ セットを作成します。

load co2data;
Ts = 0.5; % Sample time is 0.5 min
ze = iddata(Output_exp1,Input_exp1,Ts);
zv = iddata(Output_exp2,Input_exp2,Ts);

モデル次数の組み合わせを生成します。

  • na = 2:4

  • nb = 2:5 (1 番目の入力)、1 または 4 (2 番目の入力)。

  • nk = 1:4 (1 番目の入力)、0 (2 番目の入力)。

NN = struc(2:4,2:5,[1 4],1:4,0);

それぞれのモデル次数の組み合わせについて ARX モデルを推定します。

V = arxstruc(ze,zv,NN);

検証データに最もよく適合するモデル次数を選択します。

order = selstruc(V,0);

選択された次数の ARX モデルを推定します。

M = arx(ze,order);

ヒント

zezv はそれぞれ、出入力データを含む iddata オブジェクトです。周波数領域データと idfrd オブジェクトもサポートされます。NN で定義された各モデル構造のモデルがデータ セット ze を使用して推定されます。その後、それらのモデルを検証データ セット zv に適用した場合の損失関数 (正規化された予測誤差の二乗和) が計算されます。データ セット zezv は同じサイズである必要はありません。ただし、同じセットにすることもでき、その場合は計算が高速になります。

バージョン履歴

R2006a より前に導入