Signal Processing Toolbox を使用したノイズがある周波数応答モデルの推定
Simulink® モデルを開き、線形化するモデルの部分を指定します。
load_system('magball') io(1) = linio('magball/Desired Height',1); io(2) = linio('magball/Magnetic Ball Plant',1,'output');
シミュレーションする乱数入力信号を作成します。
in = frest.Random('Ts',0.001,'NumSamples',1e4);
モデルを定常状態の操作点で線形化します。
op = findop('magball',operspec('magball'),... findopOptions('DisplayReport','off')); sys = linearize('magball',io,op);
モデルをシミュレーションして、線形化出力ポイントにおける出力を取得します。
[sysest,simout] = frestimate('magball',io,in,op);
Signal Processing Toolbox™ ソフトウェアを使用して周波数応答モデルを推定します。これには、ウィンドウ処理と平均化が含まれます。
input = generateTimeseries(in); output = detrend(simout{1}.Data,'constant'); [Txy,F] = tfestimate(input.Data(:),... output,hanning(4000),[],4000,1/in.Ts); systfest = frd(Txy,2*pi*F);
解析的な線形化の結果と関数 tfestimate
(Signal Processing Toolbox) を比較します。
ax = axes; h = bodeplot(ax,sys,'b',systfest,'g',systfest.Frequency); setoptions(h,'Xlim',[10,1000],'PhaseVisible','off') legend(ax,'Linear model using LINEARIZE','Frequency response using Signal Processing Toolbox',... 'Location','SouthWest')
この場合、Signal Processing Toolbox の tfestimate
(Signal Processing Toolbox) コマンドは、ウィンドウ操作および平均化により、frestimate
よりも正確な推定を示します。