MATLAB for C/C++ Programmers

Similar documents
PowerPoint 프레젠테이션

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

설계란 무엇인가?

Microsoft PowerPoint - ch07 - 포인터 pm0415

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

설계란 무엇인가?

MATLAB for C/C++ Programmers


<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

목차 배열의개요 배열사용하기 다차원배열 배열을이용한문자열다루기 실무응용예제 C 2

JAVA PROGRAMMING 실습 02. 표준 입출력

R R ...

PowerPoint Presentation

금오공대 컴퓨터공학전공 강의자료

02장.배열과 클래스

11장 포인터

chap 5: Trees

Microsoft PowerPoint - chap06-1Array.ppt

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - 기계공학실험1-1MATLAB_개요2D.pptx

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

PowerPoint 프레젠테이션

Columns 8 through while expression {commands} 예제 1.2 (While 반복문의이용 ) >> num=0

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

슬라이드 1

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

Microsoft PowerPoint - lect08


Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - lect08.ppt [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - chap06-2pointer.ppt

adfasdfasfdasfasfadf

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - chap11-포인터의활용.pptx

chap x: G입력

WS12. Security

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

4장. 순차자료구조

Data Structure

Microsoft PowerPoint - MDA 2008Fall Ch2 Matrix.pptx

Microsoft PowerPoint - 제11장 포인터(강의)

statistics

Microsoft PowerPoint - 제3장-배열.pptx

PowerPoint Presentation

Microsoft PowerPoint - chap10-함수의활용.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

Vector Space Vector space : 모든 n 차원컬럼벡터의집합 : {, :, } (, 2), (2, 5), (-2.4, 3), (2.7, -3.77), (,), 이차원공간을모두채움 : {,, :,, } (2,3,4), (3,2,-5), Vector spa

Chapter 4. LISTS

Microsoft PowerPoint - 제11장 포인터

KNK_C_05_Pointers_Arrays_structures_summary_v02

PowerPoint Presentation

PowerPoint 프레젠테이션

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap-11.pptx

강의 개요

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

17장 클래스와 메소드

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint - 7장 배열 pptx

PowerPoint Template

F6-Á¤´ä

Tcl의 문법

Chap 6: Graphs

BIOROBOTICS LAB. MATLAB 수업자료 ( 기계항공시스템해석 ) 1. Matlab 의소개 1.1 Matlab 이란? Matlab이란 MATrix LABoratory를뜻하는말로서, 수치해석, 행렬연산, 신호처리및간편한그래픽기능등을통합하여고성

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - Chapter_04.pptx

본 강의에 들어가기 전

歯MW-1000AP_Manual_Kor_HJS.PDF

Microsoft PowerPoint - ch07 - 포인터 pm0415

문서 템플릿

Slide 1

MATLAB for C/C++ Programmers

슬라이드 1

Data Structure

Microsoft Word - matlab.doc

ºÎ·ÏB

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

= ``...(2011), , (.)''

강의 개요

슬라이드 1

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

MATLAB for C/C++ Programmers

23

슬라이드 1

Index

BMP 파일 처리

C++ Programming

쉽게 풀어쓴 C 프로그래밍

(JBE Vol. 21, No. 1, January 2016) (Regular Paper) 21 1, (JBE Vol. 21, No. 1, January 2016) ISSN 228

MATLAB

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Transcription:

행렬다루기 : 심화편 김탁은 kmste2@kaist.ac.kr 2

서브행렬로부터행렬만들기 각행렬들을서브 (sub) 행렬로하여새로운행렬 M 생성 r s p q >> B = [1 2; 3 4] B = 1 2 3 4 >> C = [ B zeros(2); ones(2) eye(2) ] C = 1 2 0 0 3 4 0 0 1 1 1 0 1 1 0 1 3

빈행렬 (Empty Matrix) Empty Matrix 의정의 0 x 0, m x 0 x n, 등어느한 dimension 이라도 0 인것 아래와같이행이나열에 [] 을대입하면해당행또는열이제거됨 >> Z = [] Z = [] >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> M(2, :) = [] M = 8 1 6 4 9 2 4

행렬에서행 / 열의합, 평균 sum(m) : 행방향으로원소들의합계산 sum(m,2) : 열방향으로원소들의합계산 mean(m) : 행방향으로원소들의평균계산 mean(m,2) : 열방향으로원소들의평균계산 5

행렬에서행 / 열의최대및최소 min(m) : 행방향으로원소들의최소값계산 min(m,[],2) : 열방향으로원소들의최소값계산 최소값이위치한인덱스? >> [V, I] = min(m) V = 1 6 2 I = 2 3 3 최소값 열에서최소값의위치 6

행렬에서행 / 열의분산, 표준편차 var(m) : 행방향으로원소들의분산계산 var(m,[],2) : 열방향으로원소들의분산계산 std(m) : 행방향으로원소들의표준편차계산 std(m,[],2) : 열방향으로원소들의표준편차계산 7

Quiz (5min) 문제 4) 어은초등학교 6 학년 1 반의성적이다음과같다고할때, 이를행렬로나타내고, 여러가지값들을구해봅시다. 국어 수학 과학 체육 영희 98 83 89 89 철수 89 92 97 87 민수 78 86 91 96 1) 각과목별평균, 분산, 최고점, 최저점 2) 각학생별총점및평균 3) 각학생별최고점받은과목점수 4) 반전체점수합계및평균 8

Quiz Sol. (5min) 문제 4) 어은초등학교 6 학년 1 반의성적이다음과같다고할때, 이를행렬로나타내고, 여러가지값들을구해봅시다. >> S = [98 83 89 89; 89 92 97 87; 78 86 91 96] 국어 수학 과학 체육 영희 98 83 89 89 철수 89 92 97 87 민수 78 86 91 96 S = 98 83 89 89 89 92 97 87 78 86 91 96 % 각과목별평균, 분산, 최고점, 최저점 >> mean(s), var(s), max(s), min(s) % 각학생별총점및평균 >> sum(s ), mean(s ) % 각학생별최고점받은과목점수 >> max(s ) % 반전체점수합계및평균 >> sum(sum(s)), mean(mean(s)) 9

행렬의차원변경 reshape 함수 m x n 행렬 p x q 행렬로변경 변환하려는행렬과변환하고자하는행렬의원소수는동일해야함 ( 즉, m*n == p*q) reshape( m x n 행렬, p, q) >> M = randi( 10, 3, 5) M = 1 8 5 8 7 5 8 5 8 7 4 2 7 3 2 >> reshape(m, 5, 3) 1 2 8 5 5 3 4 5 7 8 7 7 8 8 2 10

Quiz 11

Quiz Sol. >> v = 1:27 v = Columns 1 through 11 1 2 3 4 5 6 7 8 9 10 11 Columns 12 through 22 12 13 14 15 16 17 18 19 20 21 22 Columns 23 through 27 23 24 25 26 27 >> reshape(v, 9, 3)' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 12

행렬 Reshaping >> M = randi( 10, 3, 5) M = 1 8 5 8 7 5 8 5 8 7 4 2 7 3 2 >> M % 프라임 1 5 4 8 8 2 5 5 7 8 8 3 7 7 2 >> transpose(m) 13

행렬 Reshaping z = a+bi conj(z) = a-bi >> M = randi(10,2,3) + i*randi(10,2,3) M = 7.0000 + 8.0000i 10.0000 + 2.0000i 5.0000 + 5.0000i 4.0000 + 8.0000i 1.0000 + 5.0000i 4.0000 + 7.0000i >> ctranspose(m) 7.0000-8.0000i 4.0000-8.0000i 10.0000-2.0000i 1.0000-5.0000i 5.0000-5.0000i 4.0000-7.0000i >> M % 프라임 14

행렬 Reshaping transpose 와 ctranspose 차이 각원소가실수인행렬 M 에대해, transpose(m) 과 ctranspose(m) 은동일 각원소가복소수인행렬 M 에대해, transpose(m) 과 ctranspose(m) 은서로다름 >> M = magic(2) M = 1 3 4 2 >> transpose(m) 1 4 3 2 >> ctranspose(m) 1 4 3 2 >> M = magic(2)+magic(2)*i M = 1.0000 + 1.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i 2.0000 + 2.0000i >> transpose(m) 1.0000 + 1.0000i 4.0000 + 4.0000i 3.0000 + 3.0000i 2.0000 + 2.0000i >> ctranspose(m) 1.0000-1.0000i 4.0000-4.0000i 3.0000-3.0000i 2.0000-2.0000i 15

행렬 Reshaping rot90( M ) 행렬 M 을반시계방향으로 90 도회전함 >> M = [1 2 3; 4 5 6] M = 1 2 3 4 5 6 >> rot90(m) 3 6 2 5 1 4 16

행렬 Reshaping fliplr (flip left-right) 행렬 M 을좌우로회전시킴 flipud (flip up-down) 행렬 M 을상하로회전시킴 >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> fliplr(m) 6 1 8 7 5 3 2 9 4 >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> flipud(m) 4 9 2 3 5 7 8 1 6 17

행렬 Reshaping flipdim( M, dim ) 행렬 M 을 dim 방향으로회전 flipdim(m, 2) 행렬 M 을좌우로회전시킴 >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> fliplr(m) 6 1 8 7 5 3 2 9 4 flipdim(m, 1) 행렬 M 을상하로회전시킴 >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> flipud(m) 4 9 2 3 5 7 8 1 6 18

행렬 Reshaping circshift( M, shiftsize ) 행렬 M 의행또는열을 shiftsize 만큼 shift circshift(m, 1) >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> circshift(m, 1) 4 9 2 8 1 6 3 5 7 circshift(m, -1) >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> circshift(m, -1) 3 5 7 4 9 2 8 1 6 circshift(m, [1-1]) >> M = magic(3) M = 8 1 6 3 5 7 4 9 2 >> circshift(m, [1-1]) 9 2 4 1 6 8 5 7 3 19

행렬복제 repmat 함수 B = repmat( m x n 행렬, p, q) m x n 행렬을열방향으로 p 개, 행방향으로 q 개복제하여 mp x nq 행렬을생성 >> M = [1 2 3; 4 5 6] M = 1 2 3 4 5 6 >> repmat( M, 1, 2 ) 1 2 3 1 2 3 4 5 6 4 5 6 >> v = [1 3 4]; v = 1 3 4 >> repmat(v, 3, 2) 1 3 4 1 3 4 1 3 4 1 3 4 1 3 4 1 3 4 20

Quiz 21

Quiz Sol. >> M = [1 3; 5 6; 2 3; 8 9] M = 1 3 5 6 2 3 8 9 >> Q = [5 2] Q = 5 2 >> rq = repmat(q, 4, 1) rq = 5 2 5 2 5 2 5 2 >> (rq-m).^2 16 1 0 16 9 1 9 49 >> sqrt(sum((rq-m).^2, 2)) 4.1231 4.0000 3.1623 7.6158 22

대각행렬 행렬의대각원소를제외한나머지가 0 인행렬 diag(x): 대각원소가 x 의원소들로이루어지는대각행렬 diag(x, k): x 를 k 번째대각위치에넣음 k = 0 주대각선 k > 0 주대각선윗부분 k < 0 주대각선아랫부분 >> diag( [1 2], 1 ) 0 1 0 0 0 2 0 0 0 >> diag( [1 2 3] ) 1 0 0 0 2 0 0 0 3 >> diag( [3 4], -2 ) 0 0 0 0 0 0 0 0 3 0 0 0 0 4 0 0 23

삼각행렬 Upper triangular matrix triu(a) : 주대각선및그윗부분의원소들만을취함 triu(a, k) : A 의 k 번째대각선및그윗부분의원소들만을취함 >> A = magic(3) >> triu(a) >> triu(a, 1) A = 8 1 6 3 5 7 4 9 2 8 1 6 0 5 7 0 0 2 0 1 6 0 0 7 0 0 0 Lower triangular matrix tril(a) : 주대각선및그아랫부분의원소들만을취함 tril(a, k) : A 의 k 번째주대각선및그아랫부분의원소들만을취함 >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> tril(a) 8 0 0 3 5 0 4 9 2 >> tril(a, 1) 8 1 0 3 5 7 4 9 2 24

행과열재배치 (reordering) 주어진행렬에서행또는열의위치를변경하고자할때 Col 1 Col 3, Col 2 Col 4 이므로, [1 2 3 4 5] [3 4 1 2 5] >> M = randi(10, 4, 5) M = 8 5 1 6 2 6 6 5 7 6 3 6 1 1 7 9 2 5 8 8 >> M( :, [3 4 1 2 5]) 1 6 8 5 2 5 7 6 6 6 1 1 3 6 7 5 8 9 2 8 25

특정조건만족하는행렬원소 행렬 논리연산자 조건 으로특정조건만족하는행렬원소선택 >> M <= 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 >> find(m<=1) 9 11 15 선택된원소의값을수정하려면 >> M(M <= 1) = -10 >> M(find(M<=1)) = -10 26

Sparse Matrix 원소들의대부분이 0 인행렬 full matrix full(m) sparse(m) sparse matrix (1, 3) = 3 (1, 7) = 6 (2, 8) = 5 (3, 5) = 2 27

Sparse Matrix Sparse Matrix 에서연산 Full matrix 에서의연산방법을그대로적용가능 >> M = zeros(4,6); >> M([1 5 7]) = [5 9 6] M = 5 9 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 >> S = sparse(m) S = (1,1) 5 (1,2) 9 (3,2) 6 >> F = S * S' F = (1,1) 106 (3,1) 54 (1,3) 54 (3,3) 36 >> full(f) 106 0 54 0 0 0 0 0 54 0 36 0 0 0 0 0 28

Sparse Matrix Sparse Matrix vs Full Matrix 두행렬이차지하는메모리크기를비교 >> M = zeros(100,100); >> M([1 5 10 23]) = [5 9 13 2]; >> S = sparse(m); >> S = sparse(m) S = (1,1) 5 (5,1) 9 (10,1) 13 (23,1) 2 >> whos Name Size Bytes Class Attributes M 100x100 80000 double S 100x100 872 double sparse 29

다차원배열 (Multidimensional Array) 2 개이상의차원을가질수있는배열 n 차원배열은 n-1 차원배열을아래그림과같이쌓아놓은것으로생각할수있음 기존 2 차원행렬에이용했던방법을다차원배열에서도그대로이용 3 차원배열의예 (1,1, 3) (2,1, 3) (1, 2, 3) (2, 2, 3) (1,3, 3) (2,3, 3) 1 st index : row index 2 nd index : column index 3 rd index: page index column (1,1, 2) (2,1, 2) (3,1, 2) (1, 2, 2) (2, 2, 2) (3, 2, 2) (3,1, 3) (1,3, (4,1, 3) 2) (2,3, 2) (3,3, 2) (3, 2, 3) (4, 2, 3) (3,3, 3) (4,3, 3) row (1,1,1) (2,1,1) (3,1,1) (1, 2,1) (2, 2,1) (3, 2,1) (1,3,1) (4,1, 2) (2,3,1) (3,3,1) (4, 2, 2) (4,3, 2) page (4,1,1) (4, 2,1) (4,3,1) 30

다차원배열의의미 m x n 픽셀크기를가지는컬러이미지는 RGB 또는 CYK 값으로표현됨 즉, 이미지는 m x n x 3 의행렬로구성된다고볼수있음 n m RGB or CYK 31

다차원배열의의미 MRI image 여러장의 slice 이미지가다차원배열에저장되어있다고볼수있음 32

다차원배열의생성 방법 1. 2차원배열을먼저생성한뒤, 2차원배열을한차원씩확장하여생성 예를들어, 3 x 3 x 2 인 3 차원배열을만드는방법 >> A(:, :, 2) = [1 0 4; 3 5 6; 9 8 7] >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 A(:,:,1) = 8 1 6 3 5 7 4 9 2 A(:,:,2) = 1 0 4 3 5 6 9 8 7 1 page 2 page 33

다차원배열의생성 방법 2. 모든 2 차원배열을먼저생성한뒤, cat 함수를이용하여 생성한배열들을합침 예를들어, 3 x 3 x 2 인 3 차원배열을만드는방법 >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> B = [1 0 4; 3 5 6; 9 8 7] B = 1 0 4 3 5 6 9 8 7 >> C = cat(3, A, B) C(:,:,1) = 8 1 6 3 5 7 4 9 2 C(:,:,2) = 1 0 4 3 5 6 9 8 7 1 page 2 page 34

배열의차원을알아보는함수 N = ndims(a) 다차원배열 A 의차원의개수를알려줌 [m, n, p, q, ] = size(a) 각차원의크기를알려줌 실습 ) 앞서만든 3 차원배열 A 에대해 ndims(a), size(a) 를각각 실행해봅시다. 35

Quiz 아래두 3 x 3 x 2 배열을각각생성해보자. 생성한두 3 차원배열로부터 3 x 3 x 2 x 2 인 4 차원배열을생성해보자. 36

Quiz Sol. 아래두 3 x 3 x 2 배열을각각생성해보자. >> M1 = [5 7 8; 0 1 9; 4 3 6] M1 = 5 7 8 0 1 9 4 3 6 >> M1(:,:,2) = [1 0 4; 3 5 6; 9 8 7] M1(:,:,1) = 5 7 8 0 1 9 4 3 6 M1(:,:,2) = 1 0 4 3 5 6 9 8 7 37

Quiz Sol. 아래두 3 x 3 x 2 배열을각각생성해보자. >> M2 = [1 0 3; 4-1 2; 8 2 1] M2 = 1 0 3 4-1 2 8 2 1 >> M2(:,:,2) = [6 8 3; 4 3 6; 5 9 2] M2(:,:,1) = 1 0 3 4-1 2 8 2 1 M2(:,:,2) = 6 8 3 4 3 6 5 9 2 38

Quiz Sol. 생성한두 3 차원배열로부터 3 x 3 x 2 x 2 인 4 차원배열을생성해보자. >> M1(:,:,:,2) = M2 M1(:,:,1,1) = 5 7 8 0 1 9 4 3 6 M1(:,:,2,1) = 1 0 4 3 5 6 9 8 7 M1(:,:,1,2) = 1 0 3 4-1 2 8 2 1 M1(:,:,2,2) = 6 8 3 4 3 6 5 9 2 39

다차원배열에서합, 평균 sum(m) : 첫번째차원방향원소들의합계산 sum(m, 2) : 두번째차원방향으로원소들의합계산 sum(m, 3) : 세번째차원방향으로원소들의합계산 40

다차원배열에서특정영역의값가져오기 >> P1 = [5 7 8; 0 1 9; 4 3 6]; >> P2 = [1 0 4; 3 5 6; 9 8 7]; >> M = cat(3, P1, P2); >> M(2:end, 2:end, 1) 1 9 3 6 >> M(2:3, 2:3, :) ans(:,:,1) = 1 9 3 6 ans(:,:,2) = 5 6 8 7 41

다차원배열에서특정영역의값가져오기 >> M(1, :, :) ans(:,:,1) = 5 7 8 ans(:,:,2) = 1 0 4 >> M(:,3,:) ans(:,:,1) = 8 9 6 ans(:,:,2) = 4 6 7 42

Singleton Dimension 제거 Singleton Dimension? 배열 A 가있을때, 크기가 1 인차원 예 ) 16 x 16 x 1 x 27 세번째차원이 singleton dimension B = squeeze(a) 배열 A 에서싱글톤차원을제거 배열 A 와동일한개수의원소를가진배열 B 를리턴 >> Y = rand(2,1,3) >> mat=repmat(1,[1,1,5]) Y(:,:,1) = 0.9898 0.0397 Y(:,:,2) = 0.7779 0.9733 Y(:,:,3) = 0.4151 0.3108 >> Z = squeeze(y) Z = 0.9898 0.7779 0.4151 0.0397 0.9733 0.3108 mat(:,:,1) = 1 mat(:,:,2) = 1 mat(:,:,3) = 1 mat(:,:,4) = 1 mat(:,:,5) = 1 >> squeeze(mat) 1 1 1 1 1 43

MRI 영상분석의예 >> load mri >> D = squeeze(d); >> size(d) 단층영상을열 (column) 으로잘라서이미지를 재구성하면, 측면영상이나옴 128 128 27 >> I = D(:, 64, :); >> size(i) 128 1 27 >> I = squeeze(i); >> size(i) 128 27 >> imshow(i, map) >> I2 = imresize(i, [128, 54]); >> imshow(i2, map) 44

Quiz A 백화점체인의매장별항목별분기별매출액 ( 단위 : 백만원 ) 은다음과같다. 아래데이터를 3 x 2 x 4 배열로표현하고, 다음을계산해보자. 1) 각매장의각항목별 1년총매출액과분기별평균매출액 2) 각매장의 1년매출액 3) 2분기, 4분기의서울매장정보만가져오기 1 분기 서울매장 대전매장 여성의류 200 80 가전 180 50 귀금속 500 120 2 분기 서울매장 대전매장 여성의류 320 120 가전 210 65 귀금속 320 85 3 분기 서울매장 대전매장 여성의류 560 220 가전 250 100 귀금속 630 160 4 분기 서울매장 대전매장 여성의류 340 90 가전 120 50 귀금속 230 60 45

Quiz Sol. A 백화점체인의매장별항목별분기별매출액 ( 단위 : 백만원 ) 은다음과같다. 아래데이터를 3 x 2 x 4 배열로표현하고, 다음을계산해보자. 1) 각매장의각항목별 1년총매출액과분기별평균매출액 2) 각매장의 1년매출액 3) 2분기, 4분기의서울매장정보만가져오기 1분기 2분기 서울매장 대전매장 서울매장 대전매장 여성의류 200 80 여성의류 320 120 가전 180 50 가전 210 65 귀금속 500 120 귀금속 320 85 3분기 4분기 서울매장 대전매장 서울매장 대전매장 여성의류 560 220 여성의류 340 90 가전 250 100 가전 120 50 귀금속 630 160 귀금속 230 60 >> Q1 = [200 80; 180 50; 500 120] Q1 = 200 80 180 50 500 120 >> Q2 = [320 120; 210 65; 320 85] Q2 = 320 120 210 65 320 85 >> Q3 = [560 220; 250 100; 630 160] Q3 = 560 220 250 100 630 160 >> Q4 = [340 90; 120 50; 230 60] Q4 = 340 90 120 50 230 60 46

Quiz Sol. A 백화점체인의매장별항목별분기별매출액 ( 단위 : 백만원 ) 은다음과같다. 아래데이터를 3 x 2 x 4 배열로표현하고, 다음을계산해보자. 1) 각매장의각항목별 1년총매출액과분기별평균매출액 2) 각매장의 1년매출액 3) 2분기, 4분기의서울매장정보만가져오기 1분기 2분기 서울매장 대전매장 서울매장 대전매장 여성의류 200 80 여성의류 320 120 가전 180 50 가전 210 65 귀금속 500 120 귀금속 320 85 >> M = cat(3, Q1, Q2, Q3, Q4) M(:,:,1) = 200 80 180 50 500 120 M(:,:,2) = 320 120 210 65 320 85 M(:,:,3) = 560 220 250 100 630 160 3 분기 서울매장 대전매장 여성의류 560 220 가전 250 100 귀금속 630 160 4 분기 서울매장 대전매장 여성의류 340 90 가전 120 50 귀금속 230 60 M(:,:,4) = 340 90 120 50 230 60 47

% 문제 1 번 Solution Quiz Sol. A 백화점체인의매장별항목별분기별매출액 ( 단위 : 백만원 ) 은다음과같다. 아래데이터를 3 x 2 x 4 배열로표현하고, 다음을계산해보자. 1) 각매장의각항목별 1년총매출액과분기별평균매출액 2) 각매장의 1년매출액 3) 2분기, 4분기의서울매장정보만가져오기 >> sum(m, 3) 1420 510 760 265 1680 425 >> mean(m, 3) 355.0000 127.5000 190.0000 66.2500 420.0000 106.2500 % 문제 2 번 Solution >> sum( sum(m, 3) ) 1 분기 서울매장 대전매장 여성의류 200 80 가전 180 50 귀금속 500 120 3 분기 서울매장 대전매장 여성의류 560 220 가전 250 100 귀금속 630 160 2 분기 서울매장 대전매장 여성의류 320 120 가전 210 65 귀금속 320 85 4 분기 서울매장 대전매장 여성의류 340 90 가전 120 50 귀금속 230 60 3860 1200 % 문제 3 번 Solution >> M(:, 1, [2 4]) ans(:,:,1) = 320 210 320 ans(:,:,2) = 340 120 230 % squeeze >> Y = M(:, 1, [2 4]); >> squeeze(y) 320 340 210 120 320 230 48

다차원배열생성함수 ones, zeros, rand, randn >> ones(3, 3, 2) >> zeros(3,3,2) >> rand(3,3,2) >> randn(3,3,2) ans(:,:,1) = ans(:,:,1) = ans(:,:,1) = ans(:,:,1) = 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0.0563 0.3996 0.2954 0.8547 0.3254 0.3661 0.3843 0.5554 0.3490 0.8746-0.2592-0.8729-0.4928 0.2126 1.3399-0.4823 2.0369-0.2154 ans(:,:,2) = ans(:,:,2) = ans(:,:,2) = ans(:,:,2) = 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0.6302 0.9444 0.9196 0.6644 0.3503 0.2887 0.9921 0.1930 0.5509 0.8979-0.2592 0.9610 0.0597 0.9589-0.5638-0.5342 1.2668-1.2888 49

MATLAB Data Types 50

MATLAB Data Types 51

Numeric Data Types default numeric data type 은 double Data Type Size (bytes) Min Max int8 1-128 128 int16 2-32768 32767 int32 4-2147483648 2147483647 uint8 1 0 255 uint16 2 0 65535 uint32 4 0 4294967295 single 4 1.1755e-38 3.4028e+38 double 8 2.2251e-308 1.7977e+308 데이터타입확인은 >> class(a) 데이터타입별 min/max 값은정수의경우 intmin() / intmax(), 실수의경우 realmin() / realmax() 52

Numeric Data Type 간변환 변환하고자하는데이터타입의이름을함수처럼사용하여, 행렬을매개변수로주면됨 >> A = rand(5,3); >> sa = single(a) >> ui8 = uint8(a) >> ui16 = uint16(sa) >> double(ui16) >> 주의할점 데이터범위가더넓은데이터타입에서데이터범위가좁은데이터타입으로변환시, 데이터손실이있을수있음. eg) A = uint32(257) 와 B = int8(a) 는서로다른값 53

Numeric Data Type 변환하는이유? 1. 매우큰배열을만들때, 메모리를절약하기위해 2. 크기가큰여러배열들간의연산시, 계산속도를빨리하기위해 >> clear all; clc; % double 타입의 1000 x 1000 행렬생성 >> da = rand(1000,1000); >> class(da) double % 두배열이차지하는메모리공간확인 >> whos Name Size Bytes Class Attributes da 1000x1000 8000000 double sa 1000x1000 4000000 single % double 타입행렬을 single 타입으로변환 >> sa = single(da); >> class(sa) single 54

문자열 문자열은작은따옴표로나타냄 >> x = hello world x = hello world 두문자열의합성 문자열은 1 x n 배열로취급됨 따라서두문자열의합성은두 1 x n 배열의합성방법과동일 대부분의경우두문자열의길이가서로다르므로, [x; y] 와같이문자열을합성하려고 하면에러가남 >> x = hello >> y = world >> z = [x y] z = hello world 55

문자열 문자열의길이 >> length(z) 11 문자열배열생성방법 I 각문자의길이가동일하도록 spacebar 로맞춰준다. >> A = [ apple ; orange ] Error using vertcat Dimensions of matrices being concatenated are not consistent. >> A = ['apple '; 'orange'] A = apple orange 56

문자열 문자열배열생성방법 II >> a = 'apple'; >> b = 'orange'; >> c = 'bananas'; >> abc = char(a,b,c) abc = apple orange bananas 문자열배열에서각문자열접근방법 >> abc( 1, : ) apple >> abc( 2, : ) orange >> abc( 3, : ) bananas 57

Cell 데이터타입 숫자 10 과문자 Hello World 를동시에한배열에저장할수있을까? >> [10 'Hello World'] Hello World 실패!! 의도와전혀다른예상치못한결과 Cell array 는서로다른타입의데이터들을한곳에저장가능 >> A{1,1} = 10 A = [10] >> A{1,2} = 'hello world' A = [10] 'hello world' 올바른결과 58

Cell 데이터타입 Cell() 함수이용하여 Cell 데이터생성 >> A = cell(1,2) A = [] [] >> A{1,1} = 10 A = [10] [] 1 x 2 크기의 cell 배열생성 배열원소접근방법과동일 [] 이아니라 {} 임을주의 >> A{1,2} = 'hello world' A = [10] 'hello world' Cell 데이터시각화 각셀에어떠한타입의데이터가있는지보여줌 >> cellplot(a, legend ) 59

Cell 데이터타입 Cell 안에 Cell 넣기 >> C = { [1 2], hello ; world, [3, 4] } C = [1x2 double] 'hello' 'world' [1x2 double] >> D = {C, 'kaist'; 'academy', 2014} D = {2x2 cell} 'kaist' 'academy' [2014] >> cellplot(d, legend ) Cell 안에 Cell 의원소접근하기 % hello 원소에접근하기 >> D{1,1}{1,2} % [1 2] 배열의원소접근하기 >> D{1,1}{1,1}(1) 60

Cell 에문자열저장하기 문자열저장하기 >> C = cell(1,3) C = [] [] [] >> C{1} = 'Seoul' C = 'Seoul' [] [] >> C{2} = 'Daejeon' C = 'Seoul' 'Daejeon' [] 문자열가져오기 >> >> C{1} Seoul >> C{2} Daejeon >> C{3} Busan >> C{3} = 'Busan' C = 'Seoul' 'Daejeon' 'Busan >> cellplot(c) 61

Quiz 문제 7) 다음과같은원소들로구성된 2 x 2 Cell 배열을만들어봅시다. 62