목차 Matlab이란무엇인가? Matlab 특징 Matlab 시작 행렬 연산자 꼭알아야할명령어 M-file 프로그래밍 명령어의흐름제어
목차 (cont d) M-file Debugging subfunction 다차원배열 M-file작성시유용한함수들 Matlab Graphics 자주쓰는그래픽관련함수 Matlab을이용한신호처리예제 예제의해결포인트
Matlab 은무엇인가? 강력한수학적능력을보유한프로그램 Matrix Laboratory 의약자이며 Cleve Moler 에의해 Fortran 으로작성되었으나, 현재는미국의 Mathworks 사에의해 C++ 로, 버전 6 부터는 JAVA 를이용해작성되고있음
Matlab 은무엇인가?(cont d) 이용범위 수학과관련된계산 알고리듬개발 상황모델링과데이터분석 여러가지과학과공학적요소의그래픽적표현 GUI에의한애플리케이션개발
Matlab 특징 행렬데이터 M-File을이용한프로그래밍 Toolbox Symbol로이루어진수식계산 GUI 프로그래밍 Simulink
Matlab 시작
Matlab 시작 (cont d)
행렬선언 변수명 (variable) = 수식 (expression) 변수 : double, char, struct, cell, sparse 수식 : Matlab 이해석할수있는 numeric, nonnumeric 형의수식 행렬을만드는방법 명확한행렬요소작성 외부데이터를 load M-file로행렬을생성
행렬연산 행렬데이터입력 열구분 빈칸, 콤마 행구분 세미콜론, 엔터 A = 1 4 7 2 5 8 3 6 9
행렬연산 (cont d) 행렬의합 내장함수 : sum 기본적으로 Matlab 의모든연산과함수의입력데이터처리는 열벡터 방향이다. 행렬의 Transpose 연산자 : 복소수의공액
행렬연산 (cont d) 행렬의원소들은임의의 Matlab 식이될수있다. 행렬의원소를얻으려면 ( ) 안에해당원소의위치를넣는다.
행렬연산 (cont d) 두개의행렬을하나로합칠경우행렬의차원을일치시켜야한다. -> size 함수이용
Matlab 의연산자 연산자의종류 산술연산자 - 사칙연산 관계연산자 같다, 크다, 작다 논리연산자 AND, OR 연산자의우선순위 산술 -> 관계 -> 논리 왼쪽에서오른쪽으로, () 가우선
산술연산자 1 Transpose (. ) Power (.^ ) Complex conjugate transpose ( ) 2 Unary plus ( + ) Unary minus ( - ) 3 곱셈 ( * ) 오른쪽나눗셈 (./ ) 왼쪽나눗셈 (. ) 행렬에서의좌측과동일한연산 4 덧셈 ( + ) 뺄셈 ( - ) 5 Colon 연산자 ( : )
증가연산자, Colon 용법 변수 = 최소값 : 증가치 : 최대값 변수 = 최소값 : 최대값 행렬의인덱스를표기할수도있음
점연산자,. 행렬의각각의요소에해당연산을수행케함 X = 1 3 2 4 Y = 5 7 6 8
관계연산자 관계연산자의종류 해당연산자에대한설명 < 보다작다 (less than) <= 작거나같다 (less than or equal to) > 보다크다 (greater than) >= 크거나같다 (greater than or equal) == 같다 (equal to) ~= 같지않다 (not equal to)
논리연산자 논리연산자의종류 해당연산자의설명 & AND OR ~ NOT
논리함수 함수의종류 xor 해당함수에대한설명 Exclusive OR 연산을수행 all 벡터의모든원소가 참 (nonzero) 인경우에만 1 을반환 any 벡터의임의의원소가 참 (nonzero) 인경우에만 1 을반환 isnan isfinite isinf 벡터의원소중에서 NaN 이위치한곳에 1 을반환 벡터의원소중에서유한한크기를갖는수치, 또는 NaN 이아닌곳에 1 을반환 벡터의원소중에서무한한크기를갖는곳에 1 을반환
꼭알아야할 Matlab 명령어 help: 명령어에대한도움말을보여줌 helpdesk: Document CD인스톨후사용가능 lookfor: 함수나명령어를찾음 dir(or ls), delete, type: 도스명령어와동일 who(s): 변수의정보를알려줌 size: 변수의차원에대한정보를알려줌 clear: 변수를메모리에서삭제 clc: command window의내용을삭제
Matlab 작업공간만들기 File-Set path 선택후 Add Folder 로자신이주로작업할폴더를선택하거나새로만든다. 폴더를아래 / 위로옮길수있다.
M-file 프로그래밍 M-file 이란 Matlab 언어로쓰여진파일 script mode : 연속된 Matlab 명령어 function mode : 입 / 출력매개변수사용 Script mode 의 M-file 파일이름은어떠한것으로도사용할수있다. Function mode 의 M-file Function 이름과파일이름이같아야한다. base workspace 에있는데이터에대해서연산 Functoin workspace 에있는데이터에대해서연산
Function mode 의 M-file M-file 작성단계 1. Matlab Editor 실행 New File 아이콘클릭 2. function 출력변수 = 함수이름 ( 입력변수 ) 의형태로함수를정의 3. % 으로시작하는주석을단다. help 함수이름 하면함수정의이후부터주석이출력된다. 4. 함수본체작성
Function mode 의 M-file 의예 함수정의 주석문 이하함수본체
명령어의흐름제어 명령어의흐름을제어하는방법 4 가지 if, else와 elseif switch for while 명령어의끝은 end 로표기
if 문 if 논리문명령어문장 elseif 논리문명령어문장 else 명령어문장 end
switch 문 switch 변수또는식 case 값1 명령어문장 case 값2 명령어문장 otherwise 명령어문장 end
for 문 for 인덱스 = 초기치 : 증가치 : 최종치명령어문장 end
while 문 while 논리적인조건명령어문장 end Matlab 에도에도C 언어언어에있는 break 명령어가있는데,, 기능은서로서로같다고보아도된다된다..
M-file 의 debugging 의심이가는곳에 break point 지정 debugging 아이콘을이용하여 debugging Set/clear break point 아이콘과 Clear all break points 아이콘 차례로 Step, Step in, Step out, Continue, Exit debug mode 아이콘 Break point 를지정후실행 (F5) 시키면 point 가있곳에서실행을멈춘다.
Subfunction function mode M-file의첫번째함수를 primary function 이라하고, 이함수의이름이 M-file의이름이된다. primary function안에새롭게정의된함수를 subfunction 이라고한다. subfunction 은해당 primary function 안에서, 또는같은파일안에있는 subfunction 에서만참조가가능하다.
Subfunction 의사용예 primary function subfunction 호출 subfunction primary function 에서에서사용되는변수와수와subfunction 에서에서사용하는변수는수는이름이이름이같더라도라도서로서로별개의것이다것이다..
Global 변수 primary function 과 subfunction 에동일하게 global 변수를선언하여야같은이름의변수를서로사용할수있다.
다차원배열 Matlab 에서다차원배열은일반적인 2 차원배열에대한확장 표기법 변수 ( 차원 1, 차원 2, 차원 3, ) 차원 1 은행, 차원 2 는열, 차원 3 은페이지에대한인덱스를나타낸다.
배열인덱싱 = = 4 9 5 0 8 2 1 6 3 4 0 1 9 8 6 5 2 3 A A
다차원배열을만들어주는함수 ones(d1,d2,d3, ) 모든원소가 1 로이루어진배열 zeros(d1,d2,d3, ) 모든원소가 0 으로이루어진배열 randn(d1,d2,d3, ) 정규분포된난수발생 rand(d1,d2,d3, ) 균등하게분포된난수발생
M-file 작성시유용한함수들 input 함수 menu 함수 dialog 형함수 questdlg, msgbox, helpdlg, errordlg, warndlg etc.
input 함수 R = input( prompt, s ); command window 에 prompt 가출력되고문자열을입력할때까지기다린다 입력된문자열은 R 에반환된다. R = input( prompt ); 수식이나변수의이름을입력할때까지기다린다. 입력된것이수식인경우 workspace에있는변수들에기반을두고계산하여결과를 R에반환한다.
input 함수사용예 R1 R1과 R2 R2에동일하동일하게 12345 라는라는값을입력하였지만,, R1 R1은 char char 형으로형으로,, R2 R2는 double double형으로형으로저장되었다되었다..
menu 함수 R = menu( menu title, s1, s2, sn ); 주어진 menu title 을가진 menu window 를생성 s1, sn 항목은 push 버튼의 label 로나타남 임의의 push 버튼을클릭하면 s1 부터 1,2,,N 의값을 R 에반환한다.
menu 함수사용예
dialog 형함수 msgbox(message, title, icon ) title을박스의이름으로하고 message를표시하는박스를만든다. message박스안에표현할아이콘모양을결정 icon 종류 : error, help, warn
Matlab Graphics Handle Graphics system 그래프들의체계 Graphics Objects 9 가지 figure object, line object, axes object, patch object, surface object, text object, image object, uicontrol object, uimenu object
Matlab Graphics(cont d) handle : Matlab 그래프함수는객체들을제어할수있도록새로만들어지는객체마다고유의숫자를반환한다. 이들고유한숫자를 handle 이라고한다. Handle 값이 1 이다.
자주쓰는그래픽관련함수 2 차원그래프 plot, subplot etc. 3 차원그래프 plot3, mesh, contour, surf etc. 사용법은 help 또는 helpdesk 명령어를이용하여확인하기바람 그래픽개체라벨링 title, xlabel, legend, text, gtext etc.
Matlab 을이용한신호처리예제 요구조건 1 녹음된소리의샘플링주파수를알아내고, FFT 분석을통해기본주파수및주파수특성을분석하여라. 요구조건 2 위신호의 STFT 그래프를보여라. 요구조건 3 신호를입력받고주파수특성을보이는제어창을 GUI 를이용하여구현하여라.
요구조건 1 해결포인트 [X, Fs] = wavread( filename.ext ); wave file 을읽어들여 PCM 데이터 (X) 와샘플링주파수 (Fs) 를저장한다. fftdata = fft(x,n); PCM 데이터를 N-point DFT 를이용하여변환한다. 기본주파수확인 N이 2의배수라면 length(fftdata)/2샘플이 Nyquist 주파수 (Fs/2) 를가리킨다. 샘플간의주파수간격을통해기본주파수를확인
요구조건 2 해결포인트 win = window(@hamming,ws); 기본주파수를통해윈도우사이즈 (ws) 를결정하고, 목적에맞는윈도우 (@hamming) 를결정한다. while 을이용한 looping length(x)/ws 의횟수만큼윈도우된신호 fft 반복 [xx,yy] = meshgrid(x_fq,[0:size(sx,1)]); mesh(xx, yy, sx); 반복된 fft 의결과물을 mesh 함수를통해그림
요구조건 3 해결포인트 guide : GUI 프로그래밍 callback function 정의 axes object 창생성 axes(handles.axesobjecttagname); % 창활성화 plot(fftdata); guidata(hobject, handles); %handle 값저장 uicontrol object edit, button handles.file = str2double(get(hobject,'string')); set(handles.edittag, 'String', handles.file);