greyest
線形グレーボックス モデルの ODE パラメーターの推定
説明
例
線形グレーボックス フレームワークを使用して DC モーターのパラメーターを推定します。
測定データを読み込みます。
load('dcmotordata'); data = iddata(y, u, 0.1, 'Name', 'DC-motor'); data.InputName = 'Voltage'; data.InputUnit = 'V'; data.OutputName = {'Angular position', 'Angular velocity'}; data.OutputUnit = {'rad', 'rad/s'}; data.Tstart = 0; data.TimeUnit = 's';
data は、出力である角度位置と角速度の測定データを含む iddata オブジェクトです。また、入力である駆動電圧も含まれています。
システム ダイナミクスを表すグレーボックス モデルを作成します。
DC モーターについて、角度位置 (rad) と角速度 (rad/s) を出力として選択し、駆動電圧 (V) を入力として選択します。次の形式の線形状態空間構造を設定します。
はモーターの時定数 (秒)、 は入力から角速度への静的ゲイン (rad/(V*s)) です。
G = 0.25; tau = 1; init_sys = idgrey('motorDynamics',tau,'cd',G,0);
状態空間形式の支配方程式は MATLAB® ファイル motorDynamics.m で表されています。このファイルの内容を確認するには、MATLAB コマンド プロンプトで「edit motorDynamics.m」と入力します。
は motorDynamics.m にオプションの引数として提供されている既知の量です。
は自由推定パラメーターです。
init_sys は motor.m に関連付けられている idgrey モデルです。
を推定します。
sys = greyest(data,init_sys);
sys は、 の推定値を含む idgrey モデルです。
sys に関連付けられている推定パラメーター値を取得するには、getpvec(sys) を使用します。
結果を解析します。
opt = compareOptions('InitialCondition','zero'); compare(data,sys,Inf,opt)

sys は、角度位置は 98.35% 適合し、角速度は 84.42% 適合します。
正則化定数を使用するときのパラメーターに関する事前情報を組み込んで DC モーターのパラメーターを推定します。
モデルは静的ゲイン G と時定数 でパラメーター化されています。事前情報から、G は約 4、 は約 1 であることがわかっています。また、G よりも の値の方が信頼でき、その推定が初期推定から離れないようにします。
推定データを読み込みます。
load regularizationExampleData.mat motorData
データには、与えられた入力電圧におけるモーターの角度位置と角速度の測定値が含まれています。
DC モーターのダイナミクスの idgrey モデルを作成します。グレーボックス モデルの構造を表す関数 DCMotorODE を使用します。
mi = idgrey(@DCMotorODE,{'G', 4; 'Tau', 1},'cd',{}, 0);
mi = setpar(mi, 'label', 'default');DCMotorODE 関数を確認する場合は、次のように入力します。
type DCMotorODE.mfunction [A,B,C,D] = DCMotorODE(G,Tau,Ts) %DCMOTORODE ODE file representing the dynamics of a DC motor parameterized %by gain G and time constant Tau. % % [A,B,C,D,K,X0] = DCMOTORODE(G,Tau,Ts) returns the state space matrices % of the DC-motor with time-constant Tau and static gain G. The sample % time is Ts. % % This file returns continuous-time representation if input argument Ts % is zero. If Ts>0, a discrete-time representation is returned. % % See also IDGREY, GREYEST. % Copyright 2013 The MathWorks, Inc. A = [0 1;0 -1/Tau]; B = [0; G/Tau]; C = eye(2); D = [0;0]; if Ts>0 % Sample the model with sample time Ts s = expm([[A B]*Ts; zeros(1,3)]); A = s(1:2,1:2); B = s(1:2,3); end
正則化オプション Lambda を指定します。
opt = greyestOptions; opt.Regularization.Lambda = 100;
正則化オプション R を指定します。
opt.Regularization.R = [1, 1000];
G よりも の値の方が信頼できるため、2 番目のパラメーターの方が重みが大きくなるように指定します。
パラメーターの初期値を正則化オプション * として指定します。
opt.Regularization.Nominal = 'model';正則化されたグレーボックス モデルを推定します。
sys = greyest(motorData, mi, opt);
入力引数
等間隔にサンプリングされた推定データ。以降のセクションで説明しているように、timetable、コンマ区切りの行列ペア、あるいは時間領域または周波数領域のデータ オブジェクトとして指定します。
data の入力と出力の次元は init_sys と同じです。
既定では、モデルのサンプル時間は推定データのサンプル時間に設定されます。
timetable
一定間隔の時間ベクトルを使用する timetable として data を指定します。data には入力チャネルと出力チャネルを表す変数が含まれます。
コンマ区切りの行列ペア
入力と出力の時間領域の信号値を含む数値行列のコンマ区切りのペアとして data を指定します。この data の指定は離散時間システムにのみ使用します。
データ オブジェクト
iddata オブジェクト、idfrd オブジェクト、または frd オブジェクトとしてデータを指定します。
時間領域の推定の場合、
dataは入力と出力の信号値を含む時間領域のiddataオブジェクトでなければなりません。周波数領域の推定の場合、
dataは次のいずれかになります。
推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。
推定オプション。greyestOptions オプション セットとして指定します。opt で指定するオプションには以下が含まれます。
初期状態の取り扱い
正則化
推定に使用する数値探索手法
出力引数
推定されるグレーボックス モデル。idgrey モデルとして返されます。このモデルは、指定した初期システムと推定オプションを使用して作成されます。
推定結果と使用されたオプションに関する情報は、モデルの Report プロパティに格納されます。Report には次のフィールドがあります。
| Report のフィールド | 説明 |
|---|---|
Status | モデルのステータスの概要。モデルが構築によって作成されたものか推定によって取得されたものかを示します。 |
Method | 使用された推定コマンド |
InitialState | 推定時の初期状態の取り扱い。次のいずれかとして返されます。
このフィールドは、推定オプション セットで |
DisturbanceModel | 推定時の外乱成分 (K) の取り扱い。次の値のいずれかとして返されます。
このフィールドは、推定オプション セットで |
Fit | 推定の定量的評価。構造体として返されます。これらの品質メトリクスの詳細については、Loss Function and Model Quality Metricsを参照してください。構造体には、以下のフィールドがあります。
|
Parameters | モデル パラメーターの推定値 |
OptionsUsed | 推定に使用されたオプション セット。これは、カスタム オプションを構成していない場合は既定のオプションのセットになります。詳細については、 |
RandState | 推定開始時の乱数ストリームの状態。推定時にランダム化が使用されなかった場合は空 |
DataUsed | 推定に使用されたデータの属性。次のフィールドをもつ構造体として返されます。
|
Termination | 予測誤差の最小化に使用された反復探索の終了条件。次のフィールドを含む構造体として返されます。
数値探索の最適化を必要としない推定法の場合、 |
Report の使用の詳細については、Estimation Reportを参照してください。
推定時に計算された初期状態。各実験に対応する列ベクトルを含む行列として返されます。
この配列は、モデルの Report プロパティの Parameters フィールドにも格納されます。
バージョン履歴
R2012a で導入ほとんどの推定関数、検証関数、解析関数、およびユーティリティ関数が、時間領域入出力データを、入力と出力両方のデータを含む単一の timetable の形式、または、入力データと出力データを別々に含む行列のペアの形式で受け入れるようになりました。これらの関数は、時間領域データと周波数領域データの両方について、iddata オブジェクトを引き続きデータ ソースとして受け入れます。
Optimization Toolbox™ で lsqnonlin 探索法 (ソルバー) を使用して推定する場合の並列処理を呼び出すオプションを含む、lsqnonlin 関連の詳細オプションの指定は推奨されません。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)