Откройте 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
из-за оконности и усреднения.