MATLAB Programming
오늘 강의 내용 (2014/01/17)
MATLAB GUI 만들기 기초
1
MATLAB Programming
MATLAB GUI 프로그래밍
2
MATLAB Programming
GUI 만들기
New Graphical User Interface 선택
3
MATLAB Programming
UI Editor
4
MATLAB Programming
GUI Application
데이터가 저장되어 있는 txt 파일을 선택하면, 해당 파일로부터 행렬
데이터를 읽고, bar 그래프로 그려주는 GUI Application을 제작
GUI Application 개발 스텝
• 1. 사용자 인터페이스를 어떤 식으로 만들지 구상
• 2. 사용자 인터페이스를 키보드나 마우스 등으로 조작했을 때, 해당
이벤트를 처리할 수 있는 코드 작성
5
MATLAB Programming
사용자 인터페이스 디자인
6
파일 읽어오기
버튼 누르면
파일 선택 창 뜸
바 그래프
파일 선택 후버튼 누르면
MATLAB Programming
UI 컴포넌트 배치하기
원하는 디자인대로 UI 컴포넌트를 배치
7
MATLAB Programming
UI 실행해보기
8
MATLAB Programming
버튼 속성 바꾸기
9
버튼 더블클릭하면
속성 창 (Inspector) 열림
MATLAB Programming
버튼 속성 바꾸기
10
버튼 이름과 폰트가 바뀜
MATLAB Programming
버튼 눌렀을 때 실행될 코드 작성하기
버튼 선택 후 마우스 오른쪽 버튼을 누르고 View Callbacks
ButtonDownFcn 을 선택
11
• pushbutton1_Callback 함수가 선택됨
• 이 곳에 버튼이 눌렀을 때 실행될 명령어 작성
MATLAB Programming
버튼 눌렀을 때 실행될 코드 작성하기
버튼이 눌러지면, 파일을 선택할 수 있는 UI 창이 떠야 함
• uigetfile 함수를 사용하면 파일 선택할 수 있는 UI 창을 띄울 수 있음
12
MATLAB Programming
버튼 눌렀을 때 실행될 코드 작성하기
버튼이 눌러지면, 파일을 선택할 수 있는 UI 창이 떠야 함
• uigetfile 함수를 사용하면 파일 선택할 수 있는 UI 창을 띄울 수 있음
13
MATLAB Programming
버튼 눌렀을 때 실행될 코드 작성하기
14
• uigetfile 창에서 “열기” 를 하면 filename과 path가 반환됨
• 파일 경로와 이름을 이용하여 데이터를 읽어옴
MATLAB Programming
버튼 눌렀을 때 실행될 코드 작성하기
데이터를 bar 그래프로 그리기
• axes 컴포넌트의 핸들 얻어오기
– handles.axes컴포넌트이름
15
MATLAB Programming
완성
실행 파일 열기 traffic.txt 선택
16
MATLAB Programming
기능 추가하기
라디오 버튼을 추가하여, Bar 그래프를 grouped bar 그래프로 그릴지, stacked
bar 그래프로 그릴지 선택
17
Button Group 을 선택하여 그림 Radio Button 두개를 놓음
MATLAB Programming
Button Group의 Label 변경하기
18
원하는 이름으로 적으면 됨
• eg) Grouped/Stacked
MATLAB Programming
Button Group의 Label 변경하기
19
원하는 이름으로 적으면 됨
• eg) Grouped/Stacked
Button Group 컴포넌트를 더블
클릭하면 왼쪽과 같은 Inspector
창이 열림
Title 속성에 원하는 이름을 적으면
컴포넌트의 타이틀이 변경됨
MATLAB Programming
라디오 버튼 Label 변경하기
Button Group의 Label 변경하는 방법과 동일하게 Radio Button
컴포넌트의 타이틀도 변경
20
MATLAB Programming
라디오 버튼을 선택했을 때 실행할 코드 작성하기
두 라디오 버튼이 toggle 되어야 하므로, 마우스로 Button Group 컴포넌트를 선택한 후
마우스 오른쪽 버튼을 누르고 View Callbacks SelectionChangeFcn 을 선택
21
• uipanel1_SelectionChangeFcn 함수가 선택됨
• 이 곳에 라디오 버튼이 토글 되었을 때
실행될 명령어 작성
MATLAB Programming
라디오 버튼을 선택했을 때 실행할 코드 작성하기
22
라디오 버튼을 선택했을 때, 바 그래프를 다시 그려야 하므로,
그래프 컴포넌트에 대한 핸들을 얻어옴
hObject에 어떠한 라디오 버튼을 눌렀는지 정보가 들어있음
각 라디오 버튼이 선택되었을 때의 액션을 지정함
MATLAB Programming
각 라디오 버튼의 명칭 확인하기
각 라디오 버튼의 명칭에 따라 handles.radiobutton_N 이 될 수 있음
확인 방법
• 라디오 버튼 선택 후 더블 클릭
Inspector 창에서 “Tag” 속성의 값 확인
23
MATLAB Programming
데이터 저장 변수를 global 로 선언하기
“파일 열기“ 버튼을 눌렀을 때 최초로 파일에서 데이터를 읽어 옴.
global data 를 선언하지 않으면, 파일로부터 읽어와 data 변수에 저장된 데이터는 function
pushbutto1_Callback() 내에서만 사용되고 다른 함수에서는 사용할 수 없음
라디오 버튼의 액션을 제어하는 함수는 function uipanel1_SelectionChangeFcn() 함수 (즉,
pushbutton1_Callback() 함수의 밖에 정의 된 함수) 이므로, data 변수에 접근할 수 없음.
global data 라고 선언하면, 다른 함수에서도 data 변수에 접근 가능
24
MATLAB Programming
데이터 저장 변수를 global 로 선언하기
데이터를 가져다 쓸 다른 함수에서도 global data 라고 선언을 해주어야
외부 함수에서 정의한 data 변수에 접근할 수 있음
25
MATLAB Programming
Quiz
기능을 조금 더 확장해서, 바 그래프를 수직으로, 수평으로 보여주는 라디오 버튼을 추가해보자.
26
MATLAB Programming
Quiz Sol.
각 함수별로 바뀌는 부분
27
MATLAB Programming
Quiz Sol.
각 함수별로 바뀌는 부분
28
MATLAB Programming
Quiz Sol.
각 함수별로 바뀌는 부분
29