(1) Signal Processing Toolbox、もしくは、(2) System Identification Toolbox において、周波数応答データ(各周波数に対する振幅と位相に関する特性)から伝達関数を推定する関数が提供されています。
(1) Signal Processing Toolbox を利用する場合
Signal Processing Toolbox では、最小二乗誤差を用いた式誤差法により、周波数応答データから伝達関数の係数を推定できます。
連続システムは関数invfreqs、離散システムは関数invfreqz を用いて推定します。
連続システムを推定する例を以下に示します。
b=[2,1];
a=[1,3,2];
[H,W]=freqs(b,a);
[Be,Ae]=invfreqs(H,W,1,2)
各関数の詳細は、help もしくは doc コマンドよりヘルプドキュメントをご覧ください。
(2) System Identification Toolbox を利用する場合 (R14以降)
System Identification Toolbox では、いくつかの手法を用いて周波数応答データから伝達関数モデルを推定することができます。
コマンドベースで実行するときは、関数idfrd により周波数応答データを定義し、手法に応じた関数(oe、pem、n4sid など)を用いて伝達関数モデルを推定することができます。実行例を以下に示します。
※ この例を実行するには、System Identification Toolbox のほかに、Control System Toolbox が必要です。
b=[2,1];
a=[1,3,2];
nb=length(b)-1;
na=length(a)-1;
sys=tf(b,a);
[mag,phase,w]=bode(sys);
mag=squeeze(mag);
phase=squeeze(phase);
z = mag.*exp(i*phase/180*pi);
data = idfrd(z,w,0);
m1 = oe(data,[nb+1,na]);
m2 = pem(data,na);
m3 = n4sid(data,na);
sys1=tf(m1,'m')
sys2=tf(m2,'m')
sys3=tf(m3,'m')
bode(sys,sys1,sys2,sys3)
また、ident コマンドを使用すると、周波数応答データの定義や手法の選択をGUIで操作できます。
GUIによる実行方法や各関数の詳細は、System Identification Toolbox のドキュメントをご参照ください。
https://jp.mathworks.com/help/ident/getting-started-1.html
各種のモデル同定法の比較についての詳細は、System Identification Toolbox のドキュメントをご参照ください。
https://jp.mathworks.com/help/ident/examples/comparison-of-various-model-identification-methods.html
(注意)
一般に、伝達関数を満足な精度で推定するには、推定手法や次数などの設定を変更したり、対象とする周波数帯域を限定するなどの調整が必要です。
伝達関数の推定の詳細は、ヘルプドキュメント、および、システム同定などの専門書籍をご参照ください。