pem
線形および非線形のモデルを改良するための予測誤差の最小化
説明
例
推定された状態空間モデルの改良
部分空間法を適用する n4sid
を使用して、離散時間状態空間モデルを推定します。
データを読み込み、推定データの最初の 300 データ点を抽出します。
load sdata7 tt7; tt7e = tt7(1:300,:);
'Focus'
オプションを 'simulation'
に設定してモデル init_sys
を推定します。
opt = n4sidOptions('Focus','simulation'); init_sys = n4sid(tt7e,4,opt);
推定の適合度を表示します。
init_sys.Report.Fit.FitPercent
ans = 73.8490
pem
を使用して適合度を高めます。
sys = pem(tt7e,init_sys);
結果を解析します。
compare(tt7e,sys,init_sys);
pem
を使用すると、推定データへの適合が改善されます。
非線形グレーボックス モデルの推定
DC モーター データに適合する非線形グレーボックス モデルのパラメーターを推定します。
実験データを読み込み、開始時間や単位などの信号の属性を指定します。
load('dcmotordata'); data = iddata(y, u, 0.1); data.Tstart = 0; data.TimeUnit = 's';
非線形グレーボックス モデル (idnlgrey
) のモデルを構成します。
この例では、dcmotor_m.m
ファイルを使用します。このファイルを表示するには、MATLAB® コマンド プロンプトで「edit dcmotor_m.m
」と入力します。
file_name = 'dcmotor_m'; order = [2 1 2]; parameters = [1;0.28]; initial_states = [0;0]; Ts = 0; init_sys = idnlgrey(file_name,order,parameters,initial_states,Ts); init_sys.TimeUnit = 's'; setinit(init_sys,'Fixed',{false false});
init_sys
は、dcmotor_m.m
で構造が記述された非線形グレーボックス モデルです。モデルには、order
の指定に従って、1 つの入力、2 つの出力、2 つの状態が含まれています。
setinit(init_sys,'Fixed',{false false})
で、init_sys
の初期状態を自由推定パラメーターにするように指定しています。
モデルのパラメーターと初期状態を推定します。
sys = pem(data,init_sys);
sys
は、推定されたパラメーターとその共分散がカプセル化された idnlgrey
モデルです。
推定結果を解析します。
compare(data,sys,init_sys);
sys
は推定データに 98.34% 適合します。
プロセス モデルを使用した推定の構成
プロセス モデル構造を作成し、そのパラメーター値を更新して予測誤差を最小化します。
プロセス モデルの係数を初期化します。
init_sys = idproc('P2UDZ');
init_sys.Kp = 10;
init_sys.Tw = 0.4;
init_sys.Zeta = 0.5;
init_sys.Td = 0.25;
init_sys.Tz = 0.01;
init_sys
の係数 Kp
、Tw
、Zeta
、Td
、および Tz
が初期推定で構成されます。
init_sys
を使用して、測定データを使用して予測誤差を最小化するモデルの推定を構成します。init_sys
は idproc
モデルであるため、procestOptions
を使用してオプション セットを作成します。
load iddata1 z1; opt = procestOptions('Display','on','SearchMethod','lm'); sys = pem(z1,init_sys,opt);
Process Model Identification Estimation data: Time domain data z1 Data has 1 outputs, 1 inputs and 300 samples. Model Type: {'P2DUZ'} Algorithm: Levenberg-Marquardt search <br> ------------------------------------------------------------------------------------------ <br> Norm of First-order Improvement (%) <br> Iteration Cost step optimality Expected Achieved Bisections <br>------------------------------------------------------------------------------------------ 0 29.7194 - 260 2.57 - - 1 28.6801 6 98.9 2.57 3.5 0 2 8.38196 4.91 42.2 2.72 70.8 0 3 8.2138 0.704 41.3 1.37 2.01 12 4 8.00237 0.528 48.3 2.89 2.57 9 5 7.65577 0.588 73.1 2.02 4.33 9 6 6.851 0.809 196 4.51 10.5 9 7 5.72335 1.08 459 4.59 16.5 8 8 3.3434 2.11 1.63e+03 11.4 41.6 7 9 1.80724 0.701 504 14.2 45.9 0 10 1.6812 0.122 12 4.24 6.97 0 11 1.68092 0.014 1.11 0.309 0.0168 0 12 1.68092 0.00179 0.0215 0.3 0.000101 0 13 1.68092 0.000112 0.00634 0.3 8.26e-07 0 14 1.68092 1.36e-05 0.000382 0.3 7.62e-09 0 15 1.68092 1.18e-06 5.01e-05 0.3 7.28e-11 0 16 1.68092 1.23e-07 4.29e-06 0.3 7.27e-13 0 17 1.68092 1.17e-08 4.56e-07 0.3 2.64e-14 0 ------------------------------------------------------------------------------------------ Termination condition: No improvement along the search direction with line search.. Number of iterations: 18, Number of function evaluations: 115 Status: Estimated using PEM Fit to estimation data: 70.57%, FPE: 1.7379
モデルの適合を調べます。
sys.Report.Fit.FitPercent
ans = 70.5666
sys
は測定データに 70.63% 適合します。
入力引数
data
— 推定データ
timetable | 行列 | iddata object
| idfrd
オブジェクト | frd
オブジェクト | timetable の cell 配列 | 行列ペアの cell 配列
等間隔にサンプリングされた推定データ。以降のセクションで説明しているとおり、timetable、コンマ区切りの行列のペア、またはデータ オブジェクトとして指定します。複数実験データの場合は、data
を timetable または行列ペアの 1 行 Ne 列の cell 配列としても指定できます。Ne は実験の数です。データ オブジェクトには、オブジェクト内の複数実験データが含まれます。
timetable
一定間隔の時間ベクトルを使用する timetable
として data
を指定します。tt
には入力チャネルと出力チャネルを表す変数が含まれます。pem
は、入力引数として渡されたモデルから入力チャネルと出力チャネルの変数を導出します。
コンマ区切りの行列ペア
入力と出力の時間領域の信号値が含まれた、実数値の行列のコンマ区切りのペアとして data
を指定します。
SISO システムの場合は、等間隔にサンプリングされた入力と出力の時間領域の信号値が含まれた、Ns 行 1 列の実数値の行列ペアとして
data
を指定します。ここで、Ns はサンプルの数です。MIMO システムの場合は、
u
,y
を、以下の次元をもつ入力行列と出力行列のペアとして指定します。u
— Ns 行 Nu 列の行列。Nu は入力の数です。y
— Ns 行 Ny 列の行列。Ny は出力の数です。
データ オブジェクト
iddata
オブジェクト、idfrd
オブジェクト、または frd
オブジェクトとしてデータを指定します。
入力引数として渡されたモデルに応じて異なります。
idss
などのパラメトリック モデルの場合は、data
はiddata
モデル オブジェクト、idfrd
モデル オブジェクト、またはfrd
モデル オブジェクトにすることができます。周波数応答データ モデル (
idfrd
またはfrd
モデル オブジェクト) の場合は、data
も周波数応答データ モデルでなければなりません。iddata
オブジェクトの場合は、data
は、領域、実験数、および時間または周波数ベクトルが一致しているiddata
オブジェクトでなければなりません。
推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。
init_sys
— sys
の初期パラメーター化を構成する同定されたモデル
線形モデル | 非線形モデル
sys
の初期パラメーター化を構成する同定されたモデル。線形または非線形のモデルとして指定します。init_sys
は、測定データを使用した推定を実行して取得することも、直接構築することもできます。
init_sys
のパラメーター値は有限でなければなりません。init_sys
の任意のパラメーターの推定について、初期推定を構成し、下限と上限、および固定にするか自由にするかを指定できます。
線形モデルの場合、
Structure
プロパティを使用します。詳細については、Imposing Constraints on Model Parameter Valuesを参照してください。非線形グレーボックス モデルの場合、
InitialStates
プロパティとParameters
プロパティを使用します。パラメーター制約は、非線形 ARX モデルと Hammerstein-Wiener モデルには指定できません。
opt
— 推定のオプション
オプション セット
アルゴリズムの設定、推定のフォーカスの処理、初期条件、データのオフセットを構成する推定オプション。オプション セットとして指定します。オプション セットの作成に使用するコマンドは初期モデルのタイプによって異なります。
出力引数
アルゴリズム
PEM は、数値最適化を使用して "コスト関数" を最小化します。これは予測誤差の重み付きノルムで、スカラー出力に対して次のように定義されます。
ここで、"e(t)" はモデルの測定出力と推定出力の差です。線形モデルの場合、誤差は次のように定義されます。
ここで、"e(t)" はベクトル、コスト関数 はスカラー値です。添字 "N" は、コスト関数がデータ サンプル数の関数であり、"N" の値が大きいほど精度が高くなることを示しています。多出力モデルの場合、上記の方程式がより複雑になります。詳細については、System Identification: Theory for the User, Second Edition, by Lennart Ljung, Prentice Hall PTR, 1999 の 7 章を参照してください。
代替機能
各種のモデル構造に対する専用の推定コマンドを使用して pem
と同じ結果が得られます。たとえば、状態空間モデルの推定には ssest(data,init_sys)
を使用します。
バージョン履歴
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)