ボード線図として表さ​れるような周波数応答​のデータから伝達関数​を推定することはでき​ますか。

55 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2009 年 6 月 29 日
ボード線図として表されるような周波数応答のデータから伝達関数を推定することはできますか。

採用された回答

MathWorks Support Team
MathWorks Support Team 2016 年 11 月 7 日
(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 件)

カテゴリ

Help Center および File Exchangeデータ準備の基礎 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!