手順としては、微分方程式をモデリングし、実験データと計算によるデータの差が最小になるよう FMINSEARCH 関数で最適化を行います。
以下にメイン関数および、評価関数の例を示します。
詳細については、関連ドキュメントにありますプログラムをダウンロードしてください。
% メイン関数
% 最適化処理
F = @(x) costfcn(x); % コスト関数の定義
x0 = [1 1]; % パラメータの初期値設定
[x,fval] = fminsearch(F,x0,options); % 最適化
% 評価関数
x0 = [0 0]; % 初期状態量
[t1,y1] = ode45(@samp_ode,Time,x0); % 微分方程式の計算
Y = y1(:,1); % 計算データ
out = norm(OutData-Y); % 実験データと計算データのノルム
function dydt = samp_ode(t,y)
% x'' = -a*x'-b*x + u(t)
% a, bを実験データから推定
% 時間tにおける入力の実験データをINTERP1で補間
u = interp1(Time,InData,t);
% 微分方程式
dydt = [y(2); -param(1)*y(2)-param(2)*y(1)+u];
end