Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

pem

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

説明

sys = pem(data,init_sys) は、初期モデル init_sys のパラメーターを data の推定データに適合するように更新します。data には、timetable、行列のコンマ区切りのペア、またはデータ オブジェクトを指定できます。

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

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

すべて折りたたむ

部分空間法を適用する 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);

Figure contains an axes object. The axes object with ylabel y contains 3 objects of type line. These objects represent Validation data (y), sys: 74.54%, init\_sys: 73.85%.

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);

Figure contains 2 axes objects. Axes object 1 with ylabel y1 contains 3 objects of type line. These objects represent Validation data (y1), sys: 98.34%, init\_sys: 79.39%. Axes object 2 with ylabel y2 contains 3 objects of type line. These objects represent Validation 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.25;
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        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% 適合します。

入力引数

すべて折りたたむ

等間隔にサンプリングされた推定データ。以降のセクションで説明しているとおり、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 などのパラメトリック モデルの場合は、dataiddata モデル オブジェクト、idfrd モデル オブジェクト、または frd モデル オブジェクトにすることができます。

  • 周波数応答データ モデル (idfrd または frd モデル オブジェクト) の場合は、data も周波数応答データ モデルでなければなりません。

  • iddata オブジェクトの場合は、data は、領域、実験数、および時間または周波数ベクトルが一致している iddata オブジェクトでなければなりません。

推定データ型の取り扱いの詳細については、Data Domains and Data Types in System Identification Toolboxを参照してください。

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 より前に導入