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보다 더 정확한 추정을 제공합니다.