Introduction to MATLAB Tae-Seong Kim, Ph.D. Department of Biomedical Engineering College of Electronics & Information Kyung Hee University
Contents MATLAB 소개 및 기본 구성 MATLAB의 유용한 명령어 MATLAB 변수 선언 방법 Graph 그리는 법 plot stem
Basics of MATLAB
Introduction 개요 이용범위 Mathworks (www.mathworks.com) MATLAB은 Matrix Laboratory의 약어 여러 분야의 Toolbox(일종의 Library)를 제공 현재 버전 R2011b 강의자료: MATLAB R13인 6.5 Version 기준 이용범위 수학과 관련된 계산 알고리즘 개발 상황 모델링과 데이터 분석 여러 가지 학문적 그래픽 표현 GUI를 통한 응용 프로그램 개발
MathWorks www.mathworks.co.kr
Documentation http://www.mathworks.co.kr/support/
Workspace/Current Directory Window Command History Window Command Window Command History Window
M-File Editor/Debugger Click
유용한 명령 (commands) help lookfor who/whos ls cd clear/clear all 특정 명령에 대한 설명 lookfor 검색어에 관련된 함수들과 간략한 설명 who/whos 변수에 대한 정보 ls List cd Change Directory clear/clear all Clear 변수
help
lookfor
Expression Variable Number 해당 이름을 가지는 1 by 1 matrix 대소문자 구분 수식의 결과는 자동적으로 ans라는 변수에 저장 Ex : num_student=25, A = 1, a = 2 Number IEEE floating point standard (long) 16개의 유효 숫자와 함께 10-308에서 10+308범위를 가짐 i 혹은 j를 통한 허수 표현 inf : 1/0과 같은 무한대 NaN : Not-a-Number, 무의미한 수 ex) 0/0, inf-inf
Format Format 화면에 표시되는 자리 수, 형식 결정 화면상에 표시되는 수치 형식만을 결정! 가능한 format short short e short g long long e long g bank rat hex
Variables and Arrays
변수 선언 – Matrix 형태로 선언 입력 Transpose diag() 공백이나 콤마(,) 로 원소 구분 세미콜론(;)으로 행 구분 괄호를 이용하여 행렬 표시 [Ex] a=[1 2 3]; → “1, 2, 3”이 저장된 1x3 행렬 a에 저장 [Ex] b(1,1) = 1; → “1”이 행렬 b의 (1,1)에 저장 Transpose (‘)붙임 [Ex] A’ diag() main diagonal을 얻음 [Ex] diag(A)
변수 선언 (Cont’d) 콤마!
변수 선언 (Cont’d)
who/whos 선언된 변수명 확인 선언된 변수에 대한 세부 정보 보기
변수에 저장된 값 확인 더블 클릭!! 변수명만 치고 엔터!
Subscript ()와 ,로 표시, 첨자는 1부터 시작 : operator size, length Ex) A(2,1) : A의 2행 1열의 원소 : operator 시작:끝 Ex) 1:4 1 2 3 4 시작:증분:긑 Ex) 5:-2:1 5 3 1 행 또는 열 전체 Ex) A(2,:) A의 2행 전체 Ex) A(:,1) A의 1열 전체 size, length 행렬의 크기를 보여줌
변수 선언 (Cont’d) a 행렬의 1행 2열 값을 b에 저장
변수 선언 (Cont’d) a 행렬의 2,3행의 1,2열 값을 e에 저장 a 행렬의 2행 전체를 c에 저장 a 행렬의 3열 전체를 d에 저장 a 행렬의 2,3행의 1,2열 값을 e에 저장 a 행렬 2,3행의 전체 값을 f에 저장
증감연산 메모리에 저장된 data clear 1부터 10까지 1씩 증가하여 x에 저장 -5부터 5까지 3씩 증가하여 k에 저장
size
length 2x3 중 큰 값(여기서 3)을 k에 저장
MATLAB as a Calculator
연산 산술연산자 관계연산자 논리연산자 [주의] 기본적으로 행렬 연산 수행 (.산술연산자) : element to element 연산 관계연산자 논리연산자
Complex conjugate transpose 산술 연산자 Operator 기능 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 (A/B → A x 역행렬B) \ 왼쪽나눗셈 (A\B → 역행렬A x B) ^ 거듭제곱 ’ Complex conjugate transpose ( ) 계산순서 우선순위 우선 순위 연산 Matlab수식 1 괄호 ( ) 2 지수 ^ 3 곱하기, 나누기 *, / 4 더하기, 빼기 +, -
산술 연산 – 덧셈, 뺄셈
산술 연산 - 곱셈 행렬 곱 수행 *앞에 .을 붙이면( .* ) element 곱셈
산술 연산 – 곱셈 (Cont’d) 2x3 행렬과 2x3 행렬 곱 → 연산 불가 b’ : 행렬 b의 Transpose를 취한다!
산술 연산 - 나눗셈(Cont’d) 숫자 끼리의 나눗셈 → 일반적인 나눗셈 c = a*(역행렬 b) → 역행렬 계산
Matrix 함수 eye ones zeros rand / randn det inv triu, tril 단위행렬 ex) eye(3) ones 1로 채워진 행렬 ex) ones(3), ones(1,2) zeros 0으로 채워진 행렬 ex) zeros(3), zeros(1,2) rand / randn Uniform / Normal random값 행렬 ex) rand(3), randn(2,4) det determinant ex) det(A) inv 역행렬 ex) inv(A) triu, tril 상삼각, 하삼각행렬 ex) triu(A), tril(A)
Matrix 함수 예 단위 행렬, ( ) 숫자 = 행렬 크기 [ex] eye(2) -> 2 by 2 행렬 1로만 채워진 행렬 만들기 [ex] ones(1,3) -> 1by3 행렬 0로만 채워진 행렬 만들기 [ex]zeros(2,3) -> 2by3 행렬
Save: Mat Files
Load : Mat Files
Graphics & Visualization
Plot plot (x values, y values, ‘style-option’) 색 선 종류 y (yellow) - (solid) m (magenta) -- (dashed) c (cyan) : (dotted) r (red) -. (dash-dot) g (green) . (point) b (blue) e (circle) w (white) x (x-mark) k (black) + (plus) * (star)
Graphs Options figure : 새로운 그림창 생성 xlabel, ylabel : x, y축에 이름 달기 title : 표 제목 달기 legend : 범례달기 subplot : 그림창 분할 grid : 격자표시 axis : 표시영역 설정 clf or clear all : Clear figure hold on, hold off : Hold current graph
Graph 출력 예 - plot 선으로 된 그림 출력
Graph 출력 예 - stem 각 값만 찍히는 그림 출력
3D Graphics: Functions http://www.mathworks.co.kr/help/techdoc/ref/f16-8867.html
.M File MATLAB 명령들의 집합 – 프로그램 Script mode Function mode 주석은 %로 단다 입출력 매개변수 이용, 파일명과 함수명 일치 Subfunction 사용 가능 주석은 %로 단다 처음 열은 lookfor 검색 시 출력 help 검색 시 함수 정의 부와 MATLAB 명령어 사이의 주석문 출력
M-File Editor/Debugger 열기 Click
M-File 작성 및 저장 Click Source 작성
M-File 경로 설정 및 실행 Click 저장했던 M-File
Built-in MATLAB Functions (i.e., Libraries) MATLAB Built-in Functions = MATLAB Libraries = MATLAB Toolboxes
Built-in MATLAB Functions (i.e., Libraries)
Built-in MATLAB Functions (i.e., Libraries)
기본 함수들 기본 그래프: plot, axis, subplot, surface, figure, image,.. 명령어: help, who, save, load,.. 통계함수: sum, mean, sort, cov,.. 수학함수: abs, sin, cos, tan, sqrt, acos, angle, exp, gcd, lcm, real, imag, log, log10,.. 기타 유용한 명령어 Diary file name(.out), diary on, diary off – log 파일 기록 linspace, logspace – linear, log 공간 생성 eval, feval – 문자열 실행, 함수 실행 echo, disp, input
User-defined Functions How to Write My Own Functions
User-defined Functions (Cont.)
Logical & Branch Operations & Loops
관계 / 논리 연산자 관계 연산자 논리 연산자 Operator 기능 < 작다 <= 작거나 같다 > 크다 >= 크거나 같다 == 같다 ~= 같지 않다 Operator 기능 & and | or ~ not
제어 명령 if if, elseif, end switch switch, otherwise, end For while
What else?
Advanced Topics Toolboxes Graphical User Interfaces (GUI): guide http://www.mathworks.co.kr/help/techdoc/ref/f16-40727.html Simulink
Model-based Design Using Matlab & Simulink http://www.mathworks.co.kr/videos/model-based-design-with-matlab-and-simulink-69040.html