Chapter 1. MATLAB 입문

Download Report

Transcript Chapter 1. MATLAB 입문

1. MATLAB의 일반적인 사항
1
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont - 1
 MATLAB은 Matrix Laboratory를 위한 단순 행
렬 연산을 위해서 개발
 현재의 MATLAB은 Math Works사에 의해서 개
발됨
 행렬 연산뿐만 아니라 행렬 연산을 기초로 하여
과학 계산을 위한 하나의 프로그래밍 언어와 데
이터를 그래픽하게 처리하기 위한 후처리기와
GUI(Graphical User Interface) 및 기타
application 등으로 사용할 수도 있고
SIMULINK라는 도구를 내장하여 동적 시스템을
그래픽하게 simulation할 수도 있다.
2
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont - 2
 모든 MATLAB의 기능은 행렬 연산을 기초로 하
여 수행되기 때문에 MATLAB을 유용하게 사용
하기 위해서는 먼저 행렬에 대해서 이해를 하고
있어야 함.
3
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont - 3
 MATLAB은 초기에는 Fortran 그리고 C언어에
서 C++로 6.0에서는 Java언어를 사용하여 개
발되고 있으며 여려 종류의 OS에서 사용 할 수
있다.
Language
수치계산, 프로그래밍
MATLAB
Graphics
Data Visualization, GUI
4
Application
Programming Interface
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.1 MATLAB의 특징
(1) 행렬 데이터가 기본 연산
(2) M-file을 사용한 프로그래밍
(3) Toolbox(도구상자)
(4) 심볼로 이루어진 수식을 계산하는 기호계산
(5) GUI 프로그래밍
(6) SIMULINK
5
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.2 MATLAB시작하기
(1) MATLAB 아이콘을 클릭하면 MATLAB이 실행
되어 MATLAB Command Window 가 뜬다.
6
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3 Desktop구성요소의 종류 및 기능
(1) Command Window : MATLAB함수나 명령어,
사용자 M-file등을 실행
(2) Command History : 사용자가 Command
Window에 입력한 명령어를 기록하고, 실행하고,
복사하고, M-file롤 만들 수 있도록 한다.
7
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont - 2
(3) Current Directory browser
현재 디렉토리 내의 MATLAB과 관련된 파일을
보여주고, 파일을 Editor/Debugger를 사용하여
열거나, 그 파일을 실행하고, 복사하고 삭제하
거나 이름을 바꾸는 파일 관리자와 같은 역할을
한다.
8
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont - 3
(4) Workspace browser : MATLAB Workspace에
저장된 변수들을 보여주고, Array Editor를 사용
하여 변수를 열거나, 변수를 삭제하거나, 변수
의 데이터 값을 직접 그래프를 그리도록 한다.
(5) Launch Pad : MATLAB 도구들을 실행 시킨다.
(6) Help browser : MATLAB에 관한 도움말을 보여
주고 검색하도록 해준다.
9
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3-1 File Menu ①
(1) New : M-file, Figure, Model을 새로 만든다
(2) Open : MATLAB M-file과 SIMULINK MUL-file
을 text 편집기로 읽어오는 부분
(3) Close Command Window : Command Window
를 닫는다.
(4) Save Workspace as : Workspace에 저장되어
있는 특정 변수들이나 모든 변수는 MAT-file형식
으로 하드 디스크에 저장될 수 있다.
(5) Set Path : Path를 사용하여 파일들을 관리한다.
10
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3-1 File Menu ②
(6) Preferences : Prompt나 파일에 출력되는 수
의 정밀도나 형식, 텍스트 편집기, Window의
색등을 설정하는 부분
•
11
General : Numerical Format,Editor Preference,
Echo on 등이 있다.
① Numerical Format
a. Short : default 값으로써 소수점 아래 4자
리 까지 표시
b. Long : 소수점 아래 14자리까지 표시
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3-1 File Menu ③
c. Hex : 16진수(Hexadecimal)표시법으로 표
시
d. Bank : 소수점아래 2자리 까지만 표시
e. Plus : 숫자의 부호를 표시
f. Short E : 부동 소수점 표시 방법에 의하여
소수점 4자리까지 표시
g. Long E : 부동 소수점 표시 방법에 의하여
소수점 14자리까지 표시
h. Short G :
이하는 부동 소수점으로
그 외는 고정 소수점으로 표시하되 소수점
이하 4자리까지 표시
12
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3-1 File Menu ④
i. Long G :
이하는 부동 소수점으로
그 외는 고정 소수점으로 표시하되 소수점
이하 14자리까지 표시
j. Rational : 소수점 대신 “/”를 사용하여 표
시
k. Loose : 행렬을 출력할 때 행렬의 전후에
Blank를 삽입
l. Compact : 행렬을 출력할 때 행렬의 전후
에 Blank를 삽입하지 않음
13
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3-2 Edit Menu ①
(1) Undo : 붙여넣기(Paste)를 취소하는 메뉴
(2) Cut : Command Prompt에서 키보드나 마우
스에 의해서 선택된 내용을 잘라내어서 클립
보드에 저장
(3) Copy : Command Windows에서 키보드나 마
우스에 의해서 선택된 내용을 복사하여 클립
보드에 저장
(4) Paste : 현재의 클립보드에 저장되어 있는 내
용을 선택된 창으로 복사
14
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3-2 Edit Menu ②
(5) Clear : Command Prompt에서 키보드나 마우스
에 의해서 선택된 내용을 삭제
(6) Select All : Command Windows에 있는 모든 내
용을 선택
(7) Find : Command Wondow, Command Directory
에 있는 내용을 찾을 때 사용.
15
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.3-3 Help Menu

16
MATLAB에서 도움말을 보기 위하여 사용
서경대학교 수리정보통계학부 안가경교수<[email protected]>
1.4 명령어
(1) demo : demo는 MATLAB또는 각 Toolbox의 데
모를 보는 명령어
(2) who, whos : 현재의 workspace에 저장된 변수
들의 리스트를 보기 위해 사용. who는 변수들의
리스트만 출력하고 whos는 변수들의 리스트와
크기와 데이터형 등을 출력
(3) help : MATLAB명령어나 M-file 대한 도움말을
출력
17
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont - 2
(4) lookfor : 키워드를 사용하여 MATLAB 함수나
명령어를 찾는 명령어
(5) dir, cd, delete :
• dir : 디렉토리의 파일 목록을 출력
• cd : 현재의 디렉토리를 변경하는데 사용
• delete : 파일과 그림창을 지운다
(6) type : 특정파일의 내용을 보기 위해서 사용
18
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont - 3
(7) what : 현재의 디렉토리에 있는 파일 중에서 Mfile, MAT-file, MEX-file, P-file등의 리스트를
출력
(8) clear : Workspace나 메모리에서 특정 항목을
지우는데 사용. Workspace내의 모든 변수를 지
우고 싶으면 all을 인자로 사용.
(9) clc : MATLAB Command Prompt를 지운다
19
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont – 4
(10) echo : M-file이 실행될 때 M-file 내의 명령어
들이 Command Prompt로 출력되게 하거나 되
지 않도록 한다.
(11) open : 이름에 따라 파일 또는 변수를 여는 명
령어
(12) quit : 현재 MATLAB Workspace에 저장된 변
수들을 저장하지 않고 MATLAB을 종료
20
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2. MATLAB에서의 기본적인 연산
21
서경대학교 수리정보통계학부 안가경교수<[email protected]>
Cont – 1`
 수치 데이터에는 스칼라, 벡터, 행렬 3가지
 수치 연산은 3가지 데이터간의 연산
 MATLAB에서는 행렬이 기본적인 연산이 되기 때
문에 벡터 연산을 위한 배열연산(array operation)
이 존재
22
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1 스칼라, 벡터 행렬의 입력
23
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-1 스칼라의 입력
(1) Command Prompt 에서 직접 입력하는 방법
MATLAB Command Prompt에서 키보드를 이
용해서 변수에 스칼라를 입력
(2) M-file을 이용하는 방법
스크립트 모드로 작성된 M-file에 어떤 변수에
값을 배정하는 문장이 있으면 그 변수는
MATLAB Workspace에 그대로 저장된다.
(3) 파일로부터 읽어오는 방법
텍스트나 2진 파일로부터 스칼라 데이터를 읽어
오는 방법
24
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-2 MATLAB에서 정의되는 특별한 상수①
(1) pi : 원주율 π(3.14159265358979)를 나타낸다
(2) i, j :
, 허수를 의미
(3) inf : 무한대(∞)를 의미. 보통 분수에서 분모가
0인 경우에 해당
(4) NaN : 수가 아니라는 의미(Not a Number)
(5) eps : 부동 소수점의 상대적인 정확도
(6) ans : 가장 최근의 값을 나타내는 변수
25
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-2 MATLAB에서 정의되는 특별한 상수②
(7) flops : 부동 소수점 연산을 시행한 횟수
(8) realmax : 가장 큰 양의 부동 소수점
(9) realmin : 가장 작은 양의 부동 소수점
(10) computer : MATLAB을 수행하고 있는
computer의 종류 및 그 computer에 설치된
MATLAB에서 사용할 수 있는 행렬의 최대 원소
의 개수를 정수로 출력
26
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-2 MATLAB에서 정의되는 특별한 상수③
(11)cputime : MATLAB을 시작한 후부터
MATLAB에서 사용한 cpu time을 초로 계산하
여 출력
(12)clock : 현재 시간을 행벡터로 출력
(13)date : 문자열로 이루어진 현재 날짜를 출력
27
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-3 행렬의 입력 ①
(1) Command Prompt 에서 직접 입력하는 방법
• MATLAB에서 행렬이나 벡터와 같이 여러 개의
스칼라 요소를 가지는 데이터 형은 []를 사용하
여 나타낸다. MATLAB에서 행을 구분하는 데는
세미콜론(;)을 사용하거나 new line을 사용하고
열을 구분할 때는 콤마(,)나 공백을 사용
28
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-3 행렬의 입력 ②
• 이미 값을 가지고 있는 행렬 데이터에서 그 행렬
내의 임의의 요소의 값을 다시 할당하거나 읽기
위해서는 첨자(subscript)를 사용
① A(i,j)=b는 행렬 A의 i번째 행과 j번째 열의 요
소에 b를 할당
② b=A(i,j)는 행렬 A의 i번째 행과 j번째 열의 요
소 값을 b에 할당
29
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-3 행렬의 입력 ③
• 행렬의 첨자는 정수
• 부분행렬(submatrix)를 지정하는 방법 : 행렬의
•
30
이름 다음의 괄호 안에 “시작행:끝행, 시작열:끝
열” 과 같이 지정
행벡터 : 행렬의 이름 다음의 괄호 안에
“행, 시작열:끝열”과 같이 지정
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-3 행렬의 입력 ④
• 열벡터 : 행렬의 이름 다음의 괄호 안에
•
31
“시작행:끝행, 열”과 같이 지정
행렬의 한 행이나 열의 데이터를 모두 하나의 벡
터로 저장하는 방법 :
① B=A( k, : )는 행렬 A의 k번째 행을 B에 저장
하라는 의미
② B=A( :, k )는 행렬 A의 k번째 열을 B에 저장
하라는 의미
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-3 행렬의 입력 ⑤
(2) M-file을 이용하는 방법
스크립트 모드로 작성된 M-file에 어떤 변수에
값을 배정하는 문장이 있으면 그 변수는
MATLAB Workspace에 저장된다.
(3) 파일로부터 읽어오는 방법
텍스트 파일 형식으로 수치 값으로만 저장된
행렬 형태의 데이터를 load를 사용하여 읽으
면 파일명을 변수 명으로 하여 데이터를
Workspace에 저장
32
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-3 행렬의 입력 ⑥
(4)이미 존재하는 행렬을 이용한 행렬의 생성
MATLAB에서는 Workspace에 이미 저장되어 있
는 행렬을 이용하여 다른 행렬을 정의할 수 있도
록 한다.
33
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-4 MATLAB에서 정의되는 특별한 행렬①
(1) 빈행렬(empty matrix) : 0×0의 행렬로써 행렬
자체는 존재하지만 요소가 하나도 없는 행렬
(2) 영행렬(zero matrix) : 모든 행렬의 요소가 0이
되는 행렬
• 모든 요소가 0인 정방행렬의 경우 : zeros(n)
• 모든 요소가 0인 m×n행렬의 경우 : zeros(m, n)
• 임의의 행렬 A와 크기가 같고 모든 요소가 0인
행렬의 경우 : zeros(size(A))
34
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-4 MATLAB에서 정의되는 특별한 행렬②
(3) 모든 요소가 1로 이루어진 행렬(matrix of ones)
• 모든 요소가 1인 정방행렬의 경우 : ones(n)
• 모든 요소가 1인 m×n행렬의 경우 : ones(m, n)
• 임의의 행렬 A와 크기가 같고 모든 요소가 1인
행렬의 경우 : ones(size(A))
35
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-4 MATLAB에서 정의되는 특별한 행렬③
(4) 단위행렬(identity matrix)
• 정방행렬의 경우 : eye(n)
• m×n행렬의 경우 : eye(m, n)
• 임의의 행렬 A와 크기가 같은 단위 행렬의 경
우 : eye(size(A))
(5) 0과 1사이의 값으로 균등분포 된 난수들로 이
루어진 행렬 : rand(n) 또는 rand(n, m)
36
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-4 MATLAB에서 정의되는 특별한 행렬④
(6) 0과 1사이의 값으로 정규분포 된 난수들로 이
루어진 행렬 : randn(n) 또는 randn(n, m)
(7) 파스칼의 삼각행렬(Pascal’s triangle matrix) :
파스칼의 삼각형은
의 이항식을 전
개 했을 때 나타나는 전개계수를 의미하고
pascal(n)으로 쓴다.
37
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-4 MATLAB에서 정의되는 특별한 행렬⑤
(8) 마방진(magic square) : 마방진은 가로, 세로,
대각선으로 수의 합이 모두 같은 숫자 배열표.
magic(n)으로 나타낸다.
(9) 동반행렬(companion matrix) : compan(p)는
다항식 p와 관련된 동반행렬을 생성
(10)Hadamard행렬 : 모든 요소가 1 또는 –1로 이
루어져 있어서 다음 관계식을 만족하는 n차 정
방행렬
H = hadamard(n)
38
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.1-5 벡터의 입력
벡터는 데이터의 저장 형태에 따라서 행벡터
(row vector)와 열벡터(column vector)가 있다.
(1) []을 사용한 벡터의 입력 : 행렬과 같은 방법
(2) 콜론(:)을 사용한 벡터의 입력 : 콜론을 사용하
여 벡터를 만들 때는 “시작값 : 증분값 : 최종
값”의 형식을 따른다.
39
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2 스칼라, 행렬, 벡터의 연산 및 조작
(1) MATLAB에서 10의 거듭제곱은 e 또는 E를 사
용하여 나타낸다.
(2) 복소수 데이터의 경우에 허수부는 i나 j를 사용
하여 나타낸다.
40
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-1 스칼라의 연산 및 조작
연산작용
더하기
빼
기
곱하기
우측 나누기
좌측 나누기
지
수
수 식
a+b
a–b
MATLAB에서의 수식
a+b
a–b
a×b
a/b
b/a
a*b
a/b
a \ b (a \ b)
a^b
연산의 우선수위
1순위 괄호
3순위 곱하기, 나누기
41
2순위 지수
4순위 더하기, 빼기
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-2 행렬의 연산 및 조작 ①
(1) 행렬의 더하기와 빼기 : 크기가 같은 두 행렬의
같은 위치에 있는 원소끼리 더하거나 뺀다.
(2) 행렬의 곱하기 : 첫번째 행렬의 열의 개수와 두
번째 행렬의 행의 개수가 일치할 때 정의된다.
(3) 행렬의 나누기 :
에서
로
는 inv(A)*B로
42
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-2 행렬의 연산 및 조작 ②
(4) 행렬의 거듭제곱 : 양의 정수 k에 대한 행렬의
거듭제곱은 한 행렬 A를 k번 곱한 것과 같다.
k가 양의 정수가 아닌 경우는 λ를 행렬 A의 고
유값, V를 A의 고유벡터라 하면
AV = λV
여기에서 양변에 A를 곱하면
43
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-2 행렬의 연산 및 조작 ③
다시 양변에 A를 곱하면
따라서
= V*λ.^k*inv(v) = V*λ.^k/V
44
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-2 행렬의 연산 및 조작 ④
(5) 행렬의 조작 : 행렬의 형태를 바꾸는 함수들
• rot90 : 행렬을 90˚씩 회전 시킨다.
•
45
rot90(A, k) : k가 + 이면 반시계 방향으로, - 이
면 시계 방향으로 90˚ × k 만큼 회전
flipup : 주어진 행렬을 상하 방향으로 교환한다.
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-2 행렬의 연산 및 조작 ⑤
• fliplr : 주어진 행렬을 좌우 방향으로 교환한다.
• reshape : 한 행렬에서 원소들을 취하여 다른 행
렬을 만든다.
reshape(A,m,n)은 k개의 원소를 가지는 행렬 A
에서 k개의 요소를 취하여 m×n 행렬을 만든다.
46
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-3 벡터의 연산 및 조작 ①
(1) 배열 연산은 행렬 전체로서가 아니라 행렬 내의
각 요소가 연산의 중심이 되어서 행렬이나 벡터
의 요소 대 요소의 산술 연산이 수행된다.
연산작용
더하기
빼
기
곱하기
우측 나누기
좌측 나누기
지
수
47
수 식
a+b
a–b
MATLAB에서의 수식
a+b
a–b
a×b
a/b
b/a
a. * b
a. / b
a. \ b (a. \ b)
a. ^ b
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-3 벡터의 연산 및 조작 ②
(2) 벡터의 내적
dot(A, B) - 두 벡터 A와 B의 내적
(3) 벡터의 외적
cross(A, B) - 두 벡터 A와 B의 외적
48
서경대학교 수리정보통계학부 안가경교수<[email protected]>
2.2-4 다차원 배열의 연산 및 조작
•
•
•
•
49
벡터나 행렬은 1차원 배열(벡터의 경우)이나 2
차원 벡터(행렬의 경우)이다.
데이터의 index가 2차원 이상 필요한 경우 사용
하는 배열
2차원 배열에서 1번째 index를 행, 2번째 index
를 열이라고 하고 3차원 배열의 경우에 세 번째
index를 페이지(page)라 한다.
2차원 배열인 행렬의 경우에 첨자를 사용해서
모든 행과 열은 A(:, :)로 나타내므로 A(:, :)에
페이지에 해당하는 index를 추가한다.
서경대학교 수리정보통계학부 안가경교수<[email protected]>