特定の構造を持つ場合、一般にはSystem Identification Toolbox のグレーボックスモデル(idgrey モデル)を用いることでパラメータ推定が行えます。なお、上記のシステムの場合は、プロセスモデル(idproc モデル)を用いることでもパラメータ推定が行えます。下記に、それぞれの方法について説明します。
1. グレーボックスモデルを用いてパラメータ推定する場合
idgrey モデルへ適応するには、状態方程式で表現する必要があります。下記の手順をおこないます。
1-1) システムの構造を状態空間表現
1-2) IDGREY 関数でシステムを定義
1-3) 推定用のデータオブジェクトを作成
1-4) システムの推定
1-5) 得られたシステムから推定するパラメータを再計算
1-1) システムの構造を状態空間表現
まず、伝達関数を状態空間表現へ変換します。
.
x = -1 /C1 /R1 *x + 1/C1 /R1 *u
y = R1 *x + R2 *u
上記の式を元に、構造を記述する関数MATLAB-ファイルを作成します。
function [ A,B,C,D,K,x0 ] = mymodel( par,T,aux )
% par(1)-> R1, par(2)-> C1, par(3)-> R2
A = -1/par(1)/par(2);
B = 1/par(1)/par(2);
C = par(1);
D = par(3);
K = 0; x0 =0;
end
なお、推定パラメータは、M-ファイルの中で共通の変数(par)で定義する必要があります。
1-2) モデルを定義
IDGREY 関数でモデルを定義します。
m = idgrey('mymodel',par,'c',aux);
1-3) 推定用のデータオブジェクトを作成
データオブジェクトを作成します。周波数応答に関するデータオブジェクトを作成するには、IDFRD 関数を使用します。
data = idfrd(zfr,w,0); % w: 周波数ベクトル, zfr: 複素周波数応答
1-4) システムの推定
PEM 関数で推定します。
EST=pem(data,m);
1-5) 得られたシステムからパラメータを計算
関連ドキュメントからダウンロードできるest_param_idgrey.mに、実際のプログラム例が確認できます。なお、このプログラムの動作の確認を行うには、下記の関連ドキュメントからest_param_idgrey.m, mymodel.m, freq_magphase.mat をダウンロードして同じディレクトリに置き、est_param_idgrey.mを実行します。MAT-ファイルにはC1=1, R1=10, R2=5のパラメータで作成したボード線図のデータが入っており、est_param_idgrey.mではこれをロードしてパラメータ推定しています。
2. プロセスモデルを用いてパラメータ推定する場合
2-1) IDPROC 関数でシステムを定義
2-2) 推定用のデータオブジェクトを作成
2-3) システムの推定
2-4) 得られたシステムから推定するパラメータを再計算
2-1) IDPROC 関数でシステムを定義
上記の伝達関数は極が1つ、零点が1つあるシステムなので、'P1Z'の形のシステムを定義します。
m = idproc('P1Z');
2-2) 推定用のデータオブジェクトを作成
データオブジェクトを作成します。周波数応答に関するデータオブジェクトを作成するには、IDFRD 関数を使用します。
data = idfrd(zfr,w,0.01); % w: 周波数ベクトル, zfr: 複素周波数応答
2-3) システムの推定
PEM関数を用いて推定します。
EST=pem(data,m)
2-4) 得られたシステムから推定するパラメータを再計算
関連ドキュメントからダウンロードできるest_param_idproc.mにて、実際のプログラム例が確認できます。なお、動作の確認を行うには、下記の関連ドキュメントから、est_param_proc.mとfreq_magphase.matをダウンロードして同じディレクトリに置き、est_param_proc.mを実行します。MAT-ファイルにはC1=1, R1=10, R2=5のパラメータで作成したボード線図のデータが入っており、これをロードしてパラメータ推定しています。