arxstruc
単出力 ARX モデルの損失関数の計算
説明
は、V
= arxstruc(dataest
,dataval
,NN
)dataest
と dataval
にそれぞれ含まれている推定データと検証データの損失関数 V
を推定します。dataest
および dataval
は、timetable
、数値行列のコンマ区切りペア、あるいは iddata
オブジェクトの形式にすることができます。周波数応答データを定義する idfrd
オブジェクトにすることもできます。
dataest
および dataval
が timetable の場合、名前と値の引数 InputName
および OutputName
でチャネル名を指定することで、推定に使用する特定の入出力チャネルを選択できます。それ以外の場合は、最後の timetable 変数チャネルが単一の出力チャネルで、残りの変数がすべて入力チャネルであるものと仮定されます。
V
には損失関数と、対応する次数および遅延の両方が含まれます。selstruc
を使用して V
を解析できます。これにより、V
が評価され、適切なモデル構造体を選択できます。
arxstruc
は単出力 ARX モデルにのみ使用します。arxstruc
は単入力と多入力の両方のシステムをサポートします。
は、1 つ以上の名前と値の引数で指定された追加のオプションを使用します。V
= arxstruc(___,Name,Value
)
例
モデル次数の組み合わせを生成して単入力 ARX モデルを推定
データ生成用の ARX モデルを作成します。
A = [1 -1.5 0.7]; B = [0 1 0.5]; m0 = idpoly(A,B);
乱数入力信号と加法性ノイズ信号を生成します。
u = idinput(400,'rbs');
e = 0.1*randn(400,1);
定義した入力信号と誤差信号を使用してモデルの出力をシミュレートします。
y = sim(m0,[u e]);
推定用のモデル次数の組み合わせを生成します。すべてのモデルに 1
の遅延を指定し、na
と nb
に 1
~ 5
の範囲のモデル次数を指定します。
NN = struc(1:5,1:5,1);
ARX モデルを推定し、それぞれのモデル次数の組み合わせについて損失関数を計算します。入力データが推定と検証のデータ セットに分割されます。
V = arxstruc(u(1:200),y(1:200),u(201:400),y(201:400),NN);
検証データに最もよく適合するモデル次数を選択します。
order = selstruc(V,0)
order = 1×3
2 2 1
選択された次数の ARX モデルを推定します。
M = arx(u,y,order)
M = Discrete-time ARX model: A(z)y(t) = B(z)u(t) + e(t) A(z) = 1 - 1.498 z^-1 + 0.6971 z^-2 B(z) = 1.004 z^-1 + 0.5028 z^-2 Sample time: 1 seconds Parameterization: Polynomial orders: na=2 nb=2 nk=1 Number of free coefficients: 4 Use "polydata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using ARX on time domain data "u". Fit to estimation data: 97.75% (prediction focus) FPE: 0.009874, MSE: 0.009582
モデル次数の組み合わせを生成して多入力 ARX モデルを推定
推定と検証のデータ セットを読み込み、変数名を表示します。
load co2datatt tte ttv head(tte,3)
Time u1 u2 y1 _______ ___ __ _______ 0.5 sec 170 50 -44.302 1 sec 170 50 -44.675 1.5 sec 170 50 -45.29
モデル次数の組み合わせを生成します。
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(tte,ttv,NN);
検証データに最もよく適合するモデル次数を選択します。
order = selstruc(V,0)
order = 1×5
2 4 4 2 0
選択された次数の ARX モデルを推定します。
M = arx(tte,order)
M = Discrete-time ARX model: A(z)y(t) = B(z)u(t) + e(t) A(z) = 1 - 1.252 z^-1 + 0.302 z^-2 B1(z) = -0.3182 z^-2 - 0.1292 z^-3 + 0.2883 z^-4 + 0.001051 z^-5 B2(z) = -0.02705 + 0.01948 z^-1 + 0.1695 z^-2 + 0.3278 z^-3 Sample time: 0.5 seconds Parameterization: Polynomial orders: na=2 nb=[4 4] nk=[2 0] Number of free coefficients: 10 Use "polydata", "getpvec", "getcov" for parameters and their uncertainties. Status: Estimated using ARX on time domain data "tte". Fit to estimation data: 88.59% (prediction focus) FPE: 3.993, MSE: 3.938
入力引数
dataest
— 推定データ
timetable
| 数値行列のペア | iddata
オブジェクト | idfrd
オブジェクト
推定データ。timetable
、数値行列のコンマ区切りのペア、iddata
オブジェクト、または idfrd
オブジェクトとして指定します。
dataest
の指定はデータ型によって異なります。
timetable
入力チャネルと出力チャネルを表す変数が含まれた、一定間隔の時間ベクトルを使用する timetable
として dataest
を指定します。名前と値の引数 InputName
および OutputName
を使用して、推定用の特定のチャネルを選択します。
コンマ区切りの行列ペア
入力および出力時間領域信号値を含む行列のコンマ区切りのペア u,y として、dataest
を指定します。
データ オブジェクト
入力データと出力データを含む iddata
オブジェクトまたは idfrd
として、dataest
を指定します。
推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。
dataval
— 検証データ
timetable
| 数値行列のペア | iddata
オブジェクト | idfrd
オブジェクト
推定データ。dataest
と同じ形式および入出力チャネル順で指定します。dataval
は dataest
と同じデータにすることができます。
NN
— モデル構造体の数
整数行列
評価する ARX モデル構造体の数。Nn 行 3 列の行列として指定します。ここで Nn はモデル構造体の数です。
NN
の各行の形式は nn = [na nb nk]
です。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: V = arxstruc(dataest,dataval,NN,'InputName',"u2")
は単一の入力チャネルとして timetable 変数 u2
を選択します。
InputName
— 入力チャネル名
string | 文字ベクトル | string 配列 | 文字ベクトルの cell 配列
入力チャネル名。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。
データ ソースに timetable を使用している場合は、InputName
の名前は timetable 変数のサブセットでなければなりません。
例: V = arxstruc(tt,__,'InputName',["u1" "u2"])
は、推定で使用する timetable tt
からの入力チャネルとして変数 u1
および u2
を選択します。
OutputName
— 出力チャネル名
string | 文字ベクトル | string 配列 | 文字ベクトルの cell 配列
出力チャネル名。string または文字ベクトルとして指定します。
データ ソースに timetable を使用している場合は、OutputName
の名前は timetable 変数のサブセットでなければなりません。
例: V = arxstruc(___,'OutputName',"y3")
は、推定で使用する timetable tt
からの出力チャネルとして変数 y3
を選択します。
出力引数
バージョン履歴
R2006a より前に導入MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)