Main Content

대화형 응답-플롯 업데이트를 사용하여 GUI 작성

이 예제에서는 대화형 입력에 따라 달라지는 Control System Toolbox™ 응답 플롯을 표시하는 GUI를 만드는 방법을 보여줍니다.

이 예제에 나오는 GUI는 고유 주파수가 고정된 2차 동적 시스템의 계단 응답을 표시합니다. GUI에는 시스템의 감쇠율을 설정하는 슬라이드가 포함되어 있습니다. 응답 플롯이 슬라이더 설정을 반영하려면, 슬라이더의 콜백을 정의해야 합니다. 이 콜백은 updateSystem 명령을 사용하여 슬라이더 설정의 변화에 따라 새 시스템 데이터를 이용해 플롯을 업데이트합니다.

2차 동적 시스템의 초기값을 설정하고 시스템 모델을 만듭니다.

zeta = .5;                           % Damping Ratio
wn = 2;                              % Natural Frequency
sys = tf(wn^2,[1,2*zeta*wn,wn^2]); 

GUI의 figure를 만들고 계단 응답을 표시하는 데 필요한 축을 구성합니다.

f = figure;
ax = axes('Parent',f,'position',[0.13 0.39  0.77 0.54]);
h = stepplot(ax,sys);
setoptions(h,'XLim',[0,10],'YLim',[0,2]);

슬라이더와 슬라이더 레이블 텍스트를 figure에 추가합니다.

b = uicontrol('Parent',f,'Style','slider','Position',[81,54,419,23],...
              'value',zeta, 'min',0, 'max',1);
bgcolor = f.Color;
bl1 = uicontrol('Parent',f,'Style','text','Position',[50,54,23,23],...
                'String','0','BackgroundColor',bgcolor);
bl2 = uicontrol('Parent',f,'Style','text','Position',[500,54,23,23],...
                'String','1','BackgroundColor',bgcolor);
bl3 = uicontrol('Parent',f,'Style','text','Position',[240,25,100,23],...
                'String','Damping Ratio','BackgroundColor',bgcolor);

감쇠율 슬라이더가 움직이면 계단 응답 플롯을 업데이트하는 콜백을 설정합니다.

b.Callback = @(es,ed) updateSystem(h,tf(wn^2,[1,2*(es.Value)*wn,wn^2])); 

이 코드는 (b로 식별되는) 슬라이더의 콜백을 익명 함수로 설정합니다. 이 익명 함수에 대한 입력 인수인 esed는 슬라이더를 사용하면 자동으로 콜백으로 전달됩니다. es는 슬라이더를 나타내는 uicontrol의 핸들이며, ed는 슬라이더가 콜백으로 자동으로 전달하는 이벤트 데이터 구조체입니다. 작업 공간에서 이러한 변수를 정의하거나 관련 값을 설정하지 않아도 됩니다. (UI 콜백에 대한 자세한 내용은 Create Callbacks for Graphics Objects 항목을 참조하십시오.)

콜백은 플로팅한 응답 데이터를 새 전달 함수에서 얻은 응답으로 교체하는 updateSystem 함수에 대한 호출입니다. 콜백은 슬라이더 데이터인 es.Value를 사용하여 감쇠율이 슬라이더의 현재 값인 2차 시스템을 정의합니다.

이제 콜백을 설정했으므로 슬라이더를 움직여 보십시오. 표시된 계단 응답이 예상대로 변경됩니다.

참고 항목

|

관련 항목