본문으로 바로가기

[MATLAB 연재] 13. GUI - Slider 사용하기

category Software/MATLAB 2010.04.21 16:15
본 강좌에 사용되는 MATLAB은 버젼 7.9.0 (R2009b)을 대상으로 합니다.

이번에는 슬라이드바의 사용법에 대해 간단히 이야기해보겠습니다.

지난번과 같은 방법으로 화면을 위의 그림처럼 꾸며보도록하지요.  위에 표시된 것이 먼저 그린 slider이고 수평방향으로 누워있는 애가 두번째로 그린 slider입니다.

더블클릭해서 inspector window를 보면, slider이기 때문에, 이때껏 보지 못한 파라미터가 있음을 알 수 있습니다. 바로 Max Min인데요. 바로 slider가 처음(min)일때와 끝(max)일때의 값을 지정할 수 있습니다. MATLAB의 GUI에서 slider를 지정하고, 실행하면, slider bar의 초기 위치는 '0'인 곳입니다. 그래서 화면 구성상 깔끔하게 하기 위해 min을 -1로 설정했습니다. tag는 slider1, slider2 이렇게 붙어 있을 겁니다.

그리고, 위에 보이는 slider step은 x값이 화살표모양을 눌렀을때 움직이는 간격을 이야기 하고, y값이 네모난부분(토우 라고 합니다.)을 눌렀을때 움직이는 간격입니다. 지금은 변경할 필요를 못 느껴서 일단 그대로 두겠습니다.

여기까지만 지정하면 화면이 위와 같이 되어있을 것입니다.

제 목적은 뭐 당연히 slider의 사용이지만, 이번 예제는 slider를 이용해서 plot된 그림의 x, y축의 범위를 변경하는 것입니다. 그런데, slider 쪽의 callback함수에 그리는 명령을 주면, 실행후에 아무 그림이 나타나질 않습니다. 그러다가 slider를 한번 건드리면 그제사 그림이 나타납니다. 당연히 slider의 callback함수는 slider의 값이 변경되어야만 실행되니까요. 그래서 대상 그림이 GUI 실행과 동시에 나타나길 바라는 것이죠. 그럴땐 위에 보이듯이

function <화일이름>_OpeningFcn(..)

이라는 함수에 처음 실행과 동시에 동작해야할 내용을 넣어둡니다. 뭐 제가 잡은 예제니 그냥 심심하지 않게 적당히 sin을 그린것이라 생각해주세요^^

그리고, 저장 후에 그냥 실행하면 위와 같이 나타납니다. 당연히 slider에 아무 짓도 않했으니 slider를 아무리 움직여봐야 반응은 없습니다.^^

이제, 수직방향으로 잡은 slider1의 callback함수에 위의 내용을 넣도록 하죠. 먼저 get명령으로 handles.slider1의 내용을 받아옵니다. 꼭, handles를 붙여야한다고 지난번에 이야기했습니다. 그리고, 이미 plot명령이 실행되었고, 또 axes가 여러개 있을 수 있어서 set명령으로 속성을 변경했습니다. set으로 handles.axes1의 속성을 변경하겠다는 것입니다. 그 중 y축의 범위는 ylim이라는 속성을 건드리면 되고 그 값은 위와 같이 두었습니다. (뭐 연습이니까 그냥 잡은거라고 해두죠^^)

위는 수평방향으로 누워있는 slider2에서 x축 범위를 잡기 위해서입니다. 어차피 최초로 그릴때, 시간(t)영역을 0부터 시작하도록 하였으니, 위와 같이 xlim 속성을 잡아준 것입니다. 이제 실행하면,

되는데요. slider를 만져보시면, 어떤 변화가 나타나는지 알 수 있습니다.

testGUIslider.fig

testGUIslider.m

MATLAB 11. GUI 기초 - slider 사용.pdf

신고