このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
oe
時間領域または周波数領域のデータを使用して出力誤差の多項式モデルを推定する
構文
説明
出力誤差 (OE) モデルは多項式モデルの特殊構成であり、アクティブな多項式は 2 つしかありません (B と F)。OE モデルは、測定された入力を出力に関連付ける一方で、加法性出力外乱としてホワイト ノイズも含める従来型の伝達関数を表します。時間領域データと周波数領域データを使用して、OE モデルを推定できます。tfest
コマンドが oe
と同じ機能を提供します。tfest
では、多項式の次数ではなく、極と零点の数を使用してモデル次数を指定します。連続時間推定では、tfest
の方が高速で正確な結果が得られるため推奨されます。
OE モデルの推定
は、timetable sys
= oe(tt
,[nb nf nk]
)tt
の変数に含まれるデータを使用して、OE モデル sys
を推定します。最初の Nu 個の変数が入力として使用され、次の Ny 個の変数が出力として使用されます。Nu と Ny は指定した多項式の次数の次元から決定されます。
sys
は次の方程式で表されます。
ここで、y(t) は出力で、u(t) は入力で、e(t) は誤差です。
次数 [nb nf nk]
により、推定された多項式の各成分内のパラメーターの数が決まります。
tt
から特定の入力チャネルと出力チャネルを選択するには、名前と値の構文を使用して 'InputName'
と 'OutputName'
を対応する timetable 変数名に設定します。
は、コンマ区切りの行列 sys
= oe(u
,y
,[nb nf nk]
)u
,y
内の時間領域入力信号と出力信号を使用します。データのサンプル時間は 1 秒と仮定されます。サンプル時間を変更するには、名前と値の構文を使用して Ts
を設定します。
は、データ オブジェクト sys
= oe(data
,[nb nf nk]
)data
内の時間領域データまたは周波数領域データを使用します。
は、1 つ以上の名前と値のペアの引数で指定された追加のオプションを使用して、モデル構造の属性を指定します。この構文では、前述の任意の入力引数の組み合わせで使用できます。sys
= oe(___,Name,Value
)
初期パラメーターの構成
推定される初期条件を返す
[
は、推定される初期状態を sys
,ic
] = oe(___)initialCondition
オブジェクトとして返します。この構文は、モデルの応答を同じ推定入力データを使用してシミュレートまたは予測し、その応答を同じ推定出力データと比較する場合に使用します。初期条件を組み込むことで、シミュレーションの最初の部分における一致が高まります。
例
OE 多項式モデルの推定
入力遅延を指定する 2 つの手法を使用して、時間領域データから OE 多項式を推定します。
推定データを読み込みます。
load sdata1 tt1
B および F 多項式の次数 nb
および nf
を設定します。入力遅延 nk
を 1 サンプルに設定します。モデル sys
を計算します。
nb = 2; nf = 2; nk = 1; sys = oe(tt1,[nb nf nk]);
シミュレートしたモデルの応答を測定出力と比較します。
compare(tt1,sys)
プロットから、シミュレートしたモデルと推定データの間の適合率が 70% を超えていることがわかります。
nk
を使用する代わりに、名前と値のペアの引数 'InputDelay'
を使用して 1 サンプルの遅延を指定することもできます。
nk = 0;
sys1 = oe(tt1,[nb nf nk],'InputDelay',1);
figure
compare(tt1,sys1)
結果は同じです。
推定に関する詳しい情報は、idpoly
の sys.Report
プロパティを調べて確認できます。
sys.Report
ans = Status: 'Estimated using OE' Method: 'OE' InitialCondition: 'zero' Fit: [1x1 struct] Parameters: [1x1 struct] OptionsUsed: [1x1 idoptions.polyest] RandState: [1x1 struct] DataUsed: [1x1 struct] Termination: [1x1 struct]
たとえば、終了条件に関する詳しい情報を調べます。
sys.Report.Termination
ans = struct with fields:
WhyStop: 'Near (local) minimum, (norm(g) < tol).'
Iterations: 3
FirstOrderOptimality: 0.0708
FcnCount: 7
UpdateNorm: 1.4809e-05
LastImprovement: 5.1744e-06
レポートには、反復回数および推定で反復が停止した理由に関する情報が含まれています。
周波数応答を使用した連続時間 OE モデルの推定
推定データを読み込みます。
load oe_data1 data;
The idfrd
オブジェクト data
には、以下のモデルの連続時間周波数応答が含まれます。
モデルを推定します。
nb = 2; nf = 3; sys = oe(data,[nb nf]);
適合度を評価します。
compare(data,sys);
正則化を使用した OE モデルの推定
高次システムをシミュレートして収集したデータから高次 OE モデルを推定します。試行錯誤して正則化定数を決定し、モデル推定でその値を使用します。
データを読み込みます。
load regularizationExampleData.mat m0simdata
次数 30 の正則化されていない OE モデルを推定します。
m1 = oe(m0simdata,[30 30 1]);
試行錯誤により Lambda 値を決定して、正則化された OE モデルを取得します。
opt = oeOptions; opt.Regularization.Lambda = 1; m2 = oe(m0simdata,[30 30 1],opt);
モデルの出力を推定データと比較します。
opt = compareOptions('InitialCondition','z'); compare(m0simdata,m1,m2,opt);
正則化されたモデル m2
では、正則化されていないモデル m1
より優れた適合が得られます。
モデル応答の分散を比較します。
h = bodeplot(m1,m2); opt = getoptions(h); opt.PhaseMatching = 'on'; opt.ConfidenceRegionNumberSD = 3; opt.PhaseMatching = 'on'; setoptions(h,opt); showConfidence(h);
正則化されたモデル m2
では、正則化されていないモデル m1
と比較して分散が低減しています。
帯域制限離散時間周波数領域データを使用した連続モデルの推定
推定データ data
およびサンプル時間 Ts
を読み込みます。
load oe_data2.mat data Ts
iddata
オブジェクト data
には、以下のモデルの離散時間周波数応答が含まれます。
読み込んだ推定サンプル時間 Ts
を表示します。
Ts
Ts = 1.0000e-03
この値はプロパティ data.Ts
に一致しています。
data.Ts
ans = 1.0000e-03
入出力周波数帯域をナイキスト周波数に制限することで、data
から連続モデルを推定できます。そうするには、推定プレフィルター オプション 'WeightingFilter
' を指定して、0
から 0.5*pi/Ts
rad/s の通過帯域を定義します。ソフトウェアではこの通過帯域外の周波数をもつ応答値がすべて無視されます。
opt = oeOptions('WeightingFilter',[0 0.5*pi/Ts]);
Ts
プロパティを 0
に設定して、data
を連続時間データとして扱います。
data.Ts = 0;
連続モデルを推定します。
nb = 1; nf = 3; sys = oe(data,[nb nf],opt);
初期条件の取得
データを読み込みます。このデータは、行列形式の入出力データとサンプル時間で構成されます。
load sdata1i umat1i ymat1i Ts1i
OE 多項式モデル sys
を推定し、ic
で初期状態を返します。
nb = 2;
nf = 2;
nk = 1;
[sys,ic] = oe(umat1i,ymat1i,[nb,nf,nk],'Ts',Ts1i);
ic
ic = initialCondition with properties: A: [2x2 double] X0: [2x1 double] C: [0.9428 0.4824] Ts: 0.1000
ic
は、sys
の自由応答を状態空間形式で X0
の初期状態ベクトルにカプセル化する initialCondition
オブジェクトです。ic
は、sys
を umat1i
入力信号でシミュレートし、その応答を ymat1i
出力信号と比較する場合に組み込むことができます。
入力引数
tt
— timetable ベースの推定データ
timetable | timetable の cell 配列。
推定データ。一定間隔の時間ベクトルを使用する timetable
として指定します。tt
には入力チャネルと出力チャネルを表す変数が含まれます。複数実験データの場合、tt
は長さが Ne
の timetable の cell 配列です。Ne
は実験数です。
指定された多項式の次数の次元から、推定に使用する入力チャネルと出力チャネルの数が判定されます。入力/出力チャネルの選択は、'InputName'
と 'OutputName'
の名前と値の引数が指定されているかどうかによります。
'InputName'
と'OutputName'
が指定されていない場合、tt
の最初の Nu 個の変数が入力として使用され、tt
の次の Ny 個の変数が出力として使用されます。'InputName'
と'OutputName'
が指定されている場合、指定された変数が使用されます。指定された入力名と出力名の数は、Nu および Ny と一致しなければなりません。入力がない時系列モデルを推定できる関数では、
'InputName'
を指定する必要はありません。
推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。
u
, y
— 行列ベースの推定データ
行列 | 行列の cell 配列
推定データ。SISO システムの場合は、等間隔でサンプリングされた入力および出力時間領域信号値を含む、Ns 行 1 列の実数値行列のコンマ区切りのペアとして指定します。ここで、Ns はサンプルの数です。
MIMO システムの場合は、u
,y
を、以下の次元をもつ入力行列と出力行列のペアとして指定します。
u
— Ns 行 Nu 列の行列。Nu は入力の数です。y
— Ns 行 Ny 列の行列。Ny は出力の数です。
複数実験データの場合は、u
,y
を 1 行 Ne 列の cell 配列のペアとして指定します。Ne は実験数です。すべての実験のサンプル時間が一致していなければなりません。
出力のみを含み、入力を含まない時系列データの場合は、[]
,y
を指定します。
制限
推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。
data
— 推定データ
iddata
オブジェクト | frd
オブジェクト | idfrd
オブジェクト
推定データ。iddata
オブジェクト、frd
オブジェクト、または idfrd
オブジェクトとして指定します。
時間領域の推定の場合、data
は入力信号と出力信号の値を含む iddata
オブジェクトでなければなりません。
周波数領域の推定の場合、data
は次のいずれかになります。
時間領域の推定データは等間隔サンプルでなければなりません。既定では、モデルのサンプル時間は推定データのサンプル時間に設定されます。
複数実験データの場合、すべての実験のサンプル時間とサンプル間動作が一致していなければなりません。
時間領域データまたは離散時間周波数領域データから離散時間モデルを計算できます。tfest
を使用して連続時間モデルを計算します。
[nb nf nk]
— OE モデルの次数
整数の行ベクトル | 整数行列の行ベクトル
OE モデルの次数。1 行 3 列のベクトルまたは整数行列のベクトルとして指定します。
以下によって表されるシステムについて考えます。
ここで、y(t) は出力で、u(t) は入力で、e(t) は誤差です。この場合、[nb nf nk]
の要素は以下のとおりです。
nb
— B(q) 多項式の次数 + 1。これは B(q) 多項式の長さと同じです。nb
は Ny 行 Nu 列の行列です。Ny は出力の数であり、Nu は入力の数です。nf
— F 多項式の次数。nf
は Ny 行 Nu 列の行列です。nk
— 入力遅延。サンプルの数として表されます。nk
は Ny 行 Nu 列の行列です。遅延は B 多項式の先頭のゼロとして表示されます。
連続時間周波数領域データを使用した推定では、[nb nf]
のみを指定し、nk
は省略します。例については、周波数応答を使用した連続時間 OE モデルの推定を参照してください。
init_sys
— 線形システム
idpoly
モデル | 線形モデル | 構造体
sys
の初期パラメーター化を構成する線形システム。idpoly
モデル、別の線形モデル、または構造体として指定します。init_sys
は、測定データを使用した推定を実行して取得することも、直接構築することもできます。
init_sys
が OE 構造の idpoly
モデルの場合、oe
は init_sys
のパラメーター値を sys
の推定の初期推定として使用します。init_sys
のサンプル時間はデータのサンプル時間に一致している必要があります。
B(q) および F(q) の初期推定と制約を構成するには、init_sys
の Structure
プロパティを使用します。以下に例を示します。
init_sys
の F(q) 項の初期推定を指定するには、init_sys.Structure.F.Value
を初期推定として設定します。init_sys
の B(q) 項の制約を指定するには、以下を行います。init_sys.Structure.B.Minimum
を最小の B(q) 係数値に設定します。init_sys.Structure.B.Maximum
を最大の B(q) 係数値に設定します。init_sys.Structure.B.Free
を設定して、推定についてどの B(q) 係数が自由であるか示します。
init_sys
が OE 構造をもつ多項式モデルでない場合、最初に init_sys
が OE 構造モデルに変換されます。oe
は結果のモデルのパラメーターを、sys
を推定する初期推定として使用します。
opt
を指定せず、init_sys
が推定で取得されたものである場合、init_sys.Report.OptionsUsed
からの推定オプションが使用されます。
opt
— 推定のオプション
oeOptions
オプション セット
推定オプション。oeOptions
オプション セットとして指定します。opt
で指定するオプションには以下が含まれます。
推定の目的
初期条件の処理
数値探索法および関連オプション
推定オプションの指定例については、帯域制限離散時間周波数領域データを使用した連続モデルの推定を参照してください。
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に表示されなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'InputDelay',1
InputName
— 入力チャネル名
string | 文字ベクトル | string 配列 | 文字ベクトルの cell 配列
入力チャネル名。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。
データ ソースに timetable を使用している場合は、InputName
の名前は timetable 変数のサブセットでなければなりません。
例: sys = oe(tt,__,'InputName',["u1" "u2"])
は、推定で使用する timetable tt
からの入力チャネルとして変数 u1
および u2
を選択します。
OutputName
— 出力チャネル名
string | 文字ベクトル | string 配列 | 文字ベクトルの cell 配列
出力チャネル名。string、文字ベクトル、string 配列、または文字ベクトルの cell 配列として指定します。
データ ソースに timetable を使用している場合は、OutputName
の名前は timetable 変数のサブセットでなければなりません。
例: sys = oe(tt,__,'OutputName',["y1" "y3"])
は、推定で使用する timetable tt
からの出力チャネルとして変数 y1
および y3
を選択します。
Ts
— サンプル時間
1
(既定値) | 正のスカラー
InputDelay
— 入力遅延
0 (既定値) | 正の整数ベクトル | 整数スカラー
各入力チャネルの入力遅延。'InputDelay'
と数値ベクトルで構成されるコンマ区切りのペアとして指定します。
連続時間モデルの場合、
TimeUnit
プロパティに格納された時間単位で'InputDelay'
を指定します。離散時間モデルの場合、サンプル時間
Ts
の整数倍で'InputDelay'
を指定します。たとえば、'InputDelay'
を3
に設定すると、3 サンプリング周期の遅延が指定されます。
Nu 個の入力があるシステムの場合、InputDelay
を Nu 行 1 列のベクトルに設定します。このベクトルの各エントリは、対応する入力チャネル用の入力遅延を表す数値です。
すべてのチャネルに同じ遅延を適用するには、'InputDelay'
をスカラーとして指定します。
例については、OE 多項式モデルの推定を参照してください。
IODelay
— 伝達遅延
0 (既定値) | スカラー | 数値配列
各入出力ペアの伝達遅延。'IODelay'
と数値配列で構成されるコンマ区切りのペアとして指定します。
連続時間モデルの場合、
TimeUnit
プロパティに格納された時間単位で'IODelay'
を指定します。離散時間モデルの場合、サンプル時間
Ts
の整数倍で'IODelay'
を指定します。たとえば、'IODelay'
を4
に設定すると、4 サンプリング周期の伝達遅延が指定されます。
Nu 個の入力および Ny 個の出力のあるシステムの場合、'IODelay'
を Ny 行 Nu 列の行列に設定します。各エントリは、対応する入出力ペアの伝達遅延を表す整数値です。
すべてのチャネルに同じ遅延を適用するには、'IODelay'
をスカラーとして指定します。
たとえば、'IODelay'
を nk
値の代替として指定できます。そうすると、B 多項式の先頭のゼロの数が削減され、モデル構造が簡略化します。特に、代わりに 'IODelay'
を使用して入出力遅延として max(nk-1,0)
個の先頭のゼロを表すことができます。
出力引数
sys
— OE 多項式モデル
idpoly
オブジェクト
推定データを適合する OE 多項式モデル。idpoly
モデル オブジェクトとして返されます。このモデルは、指定したモデル次数、遅延、および推定オプションを使用して作成されます。sys
のサンプル時間は推定データのサンプル時間に一致します。したがって、sys
は、時間領域データから推定した場合は常に離散時間モデルです。時間領域データを使用した連続時間モデルの同定には、tfest
を使用します。
モデルの Report
プロパティは、推定結果および使用したオプションに関する情報を格納します。Report
には以下のフィールドがあります。
Report のフィールド | 説明 |
---|---|
Status | モデルのステータスの概要。モデルが構築によって作成されたものか推定によって取得されたものかを示します。 |
Method | 使用された推定コマンド |
InitialCondition | モデル推定時の初期条件の処理。次の値のいずれかとして返されます。
このフィールドは、推定オプション セットで |
Fit | 推定の定量的評価。構造体として返されます。これらの品質メトリクスの詳細については、Loss Function and Model Quality Metricsを参照してください。構造体には、以下のフィールドがあります。
|
Parameters | モデル パラメーターの推定値 |
OptionsUsed | 推定に使用されたオプション セット。これは、カスタム オプションを構成していない場合は既定のオプションのセットになります。詳細については、 |
RandState | 推定開始時の乱数ストリームの状態。推定時にランダム化が使用されなかった場合は空 |
DataUsed | 推定に使用されたデータの属性。次のフィールドをもつ構造体として返されます。
|
Termination | 予測誤差の最小化に使用された反復探索の終了条件。次のフィールドを含む構造体として返されます。
数値探索の最適化を必要としない推定法の場合、 |
Report
の使用の詳細については、Estimation Reportを参照してください。
ic
— 初期条件
initialCondition
オブジェクト | initialCondition
値のオブジェクト配列
推定される初期条件。initialCondition
オブジェクトまたは initialCondition
値のオブジェクト配列として返されます。
単一実験データ セットの場合、
ic
は、推定される初期条件 (x0) に対する伝達関数モデルの自由応答 (行列 A および C) を状態空間形式で表します。Ne 回の実験用の複数実験データ セットの場合、
ic
は、実験ごとに 1 つのinitialCondition
値のセットを含む長さ Ne のオブジェクト配列です。
oe
が 0
の ic
値を返し、非ゼロの初期状態があることがわかっている場合は、oeOptions
の 'InitialCondition'
オプションを 'estimate'
に設定し、更新されたオプション セットを oe
に渡します。以下に例を示します。
opt = oeOptions('InitialCondition','estimate') [sys,ic] = oe(data,np,nz,opt)
'InitialCondition'
の既定の 'auto'
設定では、初期条件が推定誤差最小化プロセス全体に無視できる影響をもたらす場合、'zero'
手法が使用されます。'estimate'
を指定すると、ic
の値が推定されます。
詳細については、initialCondition
を参照してください。この引数の使用例については、初期条件の取得を参照してください。
詳細
出力誤差 (OE) モデル
一般的な出力誤差モデルの構造:
出力誤差モデルの次数:
連続時間出力誤差モデル
data
が連続時間周波数領域データの場合、oe
は次の伝達関数を使用して連続時間モデルを推定します。
分子と分母の次数は、離散時間のケースと同様に nb
と nf
です。ただし、サンプル遅延 nk
は連続のケースでは存在せず、推定を指令する際に nk
を指定してはなりません。代わりに、プロパティ TimeUnit
に格納された時間単位のシステム遅延とともに、名前と値のペアの引数 'IODelay'
を使用してシステム遅延を表します。たとえば、連続システムの遅延が iod
秒であるとします。model = oe(data,[nb nf],'IODelay',iod)
を使用します。
バージョン履歴
R2006a より前に導入R2022b: 時間領域推定データが timetable 形式および行列形式で受け入れられる
ほとんどの推定関数、検証関数、解析関数、およびユーティリティ関数が、時間領域入出力データを、入力と出力両方のデータを含む単一の timetable の形式、または、入力データと出力データを別々に含む行列のペアの形式で受け入れるようになりました。これらの関数は、時間領域データと周波数領域データの両方について、iddata
オブジェクトを引き続きデータ ソースとして受け入れます。
R2018a: SearchMethod
が 'lsqnonlin'
の場合、SearchOptions
の詳細オプションは非推奨
Optimization Toolbox™ で lsqnonlin
探索法 (ソルバー) を使用して推定する場合の並列処理を呼び出すオプションを含む、lsqnonlin
関連の詳細オプションの指定は推奨されません。
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)