ボード線図として表されるような周波数応答のデータから伝達関数を推定することはできますか。
19 views (last 30 days)
Show older comments
ボード線図として表されるような周波数応答のデータから伝達関数を推定することはできますか。
Accepted Answer
MathWorks Support Team
on 7 Nov 2016
(1) Signal Processing Toolbox、もしくは、(2) System Identification Toolbox において、周波数応答データ(各周波数に対する振幅と位相に関する特性)から伝達関数を推定する関数が提供されています。
(1) Signal Processing Toolbox を利用する場合
Signal Processing Toolbox では、最小二乗誤差を用いた式誤差法により、周波数応答データから伝達関数の係数を推定できます。
連続システムは関数invfreqs、離散システムは関数invfreqz を用いて推定します。
連続システムを推定する例を以下に示します。
%%Signal Processing Toolbox の関数invfreqsでの解析
% デモ用の同定入力の作成
b=[2,1]; % 分子係数
a=[1,3,2]; % 分母係数
[H,W]=freqs(b,a); % H:複素周波数応答
% ※[振幅].*exp(i*[位相])に相当
% W:周波数ベクトル
% invfreqs による推定 (分子次数1、分母次数2 で推定)
[Be,Ae]=invfreqs(H,W,1,2) % Be:推定した分子係数、Ae:推定した分母係数
各関数の詳細は、help もしくは doc コマンドよりヘルプドキュメントをご覧ください。
(2) System Identification Toolbox を利用する場合 (R14以降)
System Identification Toolbox では、いくつかの手法を用いて周波数応答データから伝達関数モデルを推定することができます。
コマンドベースで実行するときは、関数idfrd により周波数応答データを定義し、手法に応じた関数(oe、pem、n4sid など)を用いて伝達関数モデルを推定することができます。実行例を以下に示します。
※ この例を実行するには、System Identification Toolbox のほかに、Control System Toolbox が必要です。
%%System Identification 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:振幅, phase:位相, w:周波数ベクトル
mag=squeeze(mag); % 1の次元を削除
phase=squeeze(phase);
z = mag.*exp(i*phase/180*pi); % z: 複素周波数応答
% IDFRD(同定用の周波数応答データ)オブジェクト作成
data = idfrd(z,w,0); % 連続システムの周波数応答データとして定義
% 各手法での伝達関数モデル推定例
m1 = oe(data,[nb+1,na]);
m2 = pem(data,na); % 分母分子のそれぞれの次数は指定不可
m3 = n4sid(data,na); % 分母分子のそれぞれの次数は指定不可
% TF(伝達関数)オブジェクトに変換
sys1=tf(m1,'m') % '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
(注意)
一般に、伝達関数を満足な精度で推定するには、推定手法や次数などの設定を変更したり、対象とする周波数帯域を限定するなどの調整が必要です。
伝達関数の推定の詳細は、ヘルプドキュメント、および、システム同定などの専門書籍をご参照ください。
0 Comments
More Answers (0)
See Also
Categories
Find more on データの解析 in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!