Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

pem

線形および非線形のモデルを改良するための予測誤差の最小化

説明

sys = pem(data,init_sys) は、初期モデルのパラメーターを推定データに適合するように更新します。この関数では、予測誤差最小化アルゴリズムを使用して初期モデルのパラメーターを更新します。このコマンドは、前に推定したモデルのパラメーターを改良するために使用します。

sys = pem(data,init_sys,opt) は、オプション セットを使用して推定オプションを指定します。

すべて折りたたむ

部分空間法を使用して離散時間状態空間モデルを推定します。その後、予測誤差を最小化して改良します。

部分空間法を適用する n4sid を使用して、離散時間状態空間モデルを推定します。

load iddata7 z7;
z7a = z7(1:300);
opt = n4sidOptions('Focus','simulation');
init_sys = n4sid(z7a,4,opt);

init_sys は推定データに 73.85% 適合します。

init_sys.Report.Fit.FitPercent
ans = 73.8490

pem を使用して適合度を高めます。

sys = pem(z7a,init_sys);

結果を解析します。

compare(z7a,sys,init_sys);

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent z7a (y1), sys: 74.54%, init\_sys: 73.85%.

sys は推定データに 74.54% 適合します。

DC モーター データに適合する非線形グレーボックス モデルのパラメーターを推定します。

実験データを読み込み、開始時間や単位などの信号の属性を指定します。

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','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);

Figure contains 2 axes objects. Axes object 1 contains 3 objects of type line. These objects represent data (y1), sys: 98.34%, init\_sys: 79.39%. Axes object 2 contains 3 objects of type line. These objects represent data (y2), sys: 84.48%, init\_sys: 49.15%.

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.1;
init_sys.Tz = 0.01;

init_sys の係数 KpTwZetaTd、および Tz が初期推定で構成されます。

init_sys を使用して、測定データを使用して予測誤差を最小化するモデルの推定を構成します。init_sysidproc モデルであるため、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        21.2201          -            414         3.8           -         -                                                                                                                                                                                                                                                                                                                               
     1        19.4048       1.15            323         3.8        8.55         7
     2        14.8743       2.48            814        4.41        23.3         0
     3        6.84305      0.873            451        4.43          54        11
     4        5.20355      0.977       1.49e+03        8.75          24         7
     5        1.83911      0.973            473          13        64.7         0
     6        1.67582      0.225           20.3        4.98        8.88         0
     7        1.67335      0.062           6.57      0.0829       0.147         0
     8        1.67334    0.00494         0.0555    0.000374    0.000648         0
------------------------------------------------------------------------------------------
Termination condition: Near (local) minimum, (norm(g) < tol)..
Number of iterations: 8, Number of function evaluations: 42   
                                                              
Status: Estimated using PEM                                   
Fit to estimation data: 70.63%, FPE: 1.73006                  

モデルの適合を調べます。

sys.Report.Fit.FitPercent
ans = 70.6330

sys は測定データに 70.63% 適合します。

入力引数

すべて折りたたむ

測定された入出力データを含む推定データ。iddata オブジェクトまたは idfrd オブジェクトとして指定します。周波数領域データは init_sys が線形モデルの場合にのみ使用できます。

datainit_sys の入出力の次元は一致しなければなりません。

sys の初期パラメーター化を構成する同定されたモデル。線形または非線形のモデルとして指定します。init_sys は、測定データを使用した推定を実行して取得することも、直接構築することもできます。

init_sys のパラメーター値は有限でなければなりません。init_sys の任意のパラメーターの推定について、初期推定を構成し、下限と上限、および固定にするか自由にするかを指定できます。

  • 線形モデルの場合、Structure プロパティを使用します。詳細については、Imposing Constraints on Model Parameter Valuesを参照してください。

  • 非線形グレーボックス モデルの場合、InitialStates プロパティと Parameters プロパティを使用します。パラメーター制約は、非線形 ARX モデルと Hammerstein-Wiener モデルには指定できません。

アルゴリズムの設定、推定のフォーカスの処理、初期条件、データのオフセットを構成する推定オプション。オプション セットとして指定します。オプション セットの作成に使用するコマンドは初期モデルのタイプによって異なります。

出力引数

すべて折りたたむ

同定されたモデル。init_sys と同じタイプのモデルとして返されます。このモデルは、予測誤差最小化アルゴリズムを使用して init_sys の自由パラメーターを推定することで取得されます。

アルゴリズム

PEM は、数値最適化を使用して "コスト関数" を最小化します。これは予測誤差の重み付きノルムで、スカラー出力に対して次のように定義されます。

VN(G,H)=t=1Ne2(t)

ここで、"e(t)" はモデルの測定出力と推定出力の差です。線形モデルの場合、誤差は次のように定義されます。

e(t)=H1(q)[y(t)G(q)u(t)]

ここで、"e(t)" はベクトル、コスト関数 VN(G,H) はスカラー値です。添字 "N" は、コスト関数がデータ サンプル数の関数であり、"N" の値が大きいほど精度が高くなることを示しています。多出力モデルの場合、上記の方程式がより複雑になります。詳細については、System Identification: Theory for the User, Second Edition, by Lennart Ljung, Prentice Hall PTR, 1999 の 7 章を参照してください。

代替機能

各種のモデル構造に対する専用の推定コマンドを使用して pem と同じ結果が得られます。たとえば、状態空間モデルの推定には ssest(data,init_sys) を使用します。

バージョン履歴

R2006a より前に導入