Main Content

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 よりも正確な推定を示します。