matlab 개요와 응용 2 장 배열 생성

53
MATLAB MATLAB MATLAB 개개개 개개 개개개 개개 2 2 개 개개 개개 개 개개 개개 5 10 15 20 5 10 15 20 5 10 15 20

Upload: sybill-lowe

Post on 30-Dec-2015

269 views

Category:

Documents


2 download

DESCRIPTION

MATLAB 개요와 응용 2 장 배열 생성. 강의 내용. 1 차원 배열 ( 벡터 ) 의 생성 2 차원 배열 ( 행렬 ) 의 생성 전치 연산자 배열 주소지정 콜론의 사용 배열 원소의 추가 및 삭제 배열 처리를 위한 내장함수 문자열과 문자열 변수 예제. 배열은 MATLAB 이 데이터를 저장하고 다루기 위해 사용하는 기본적인 형태로서 , 행 (row) 이나 열 (column), 또는 행과 열로 정렬된 수들의 나열이다 . 1 차원 배열 ( 벡터 ) 로 나타낼 수 있는 예 : - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: MATLAB 개요와 응용 2 장 배열 생성

MATLAB

MATLABMATLAB 개요와 응용개요와 응용22 장 배열 생성장 배열 생성

510

1520

5

10

15

20

5

10

15

20

Page 2: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 2/53

강의 내용강의 내용

11 차원 배열차원 배열 (( 벡터벡터 )) 의 생성의 생성 22 차원 배열차원 배열 (( 행렬행렬 )) 의 생성의 생성 전치 연산자전치 연산자 배열 주소지정배열 주소지정 콜론의 사용콜론의 사용 배열 원소의 추가 및 삭제배열 원소의 추가 및 삭제 배열 처리를 위한 내장함수배열 처리를 위한 내장함수 문자열과 문자열 변수문자열과 문자열 변수 예제예제

Page 3: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 3/53

연 도

1984 1986 1988 1990 1992 1994 1996

인구 (백만 )

127 130 136 145 158 178 211

P (2,5, 6)

x

z

y 어떤 수들의 집합도 벡터로 나타낼 수 있다어떤 수들의 집합도 벡터로 나타낼 수 있다 ..

예예 ) ) 어느 도시의 연도별 인구수에 대한 표에서어느 도시의 연도별 인구수에 대한 표에서 연도와 인구수를 벡터로 표시할 수 연도와 인구수를 벡터로 표시할 수

있다있다 ..>> year = [1984 1986 1988 1990 1992 1994 1996]>> year = [1984 1986 1988 1990 1992 1994 1996]>> pop = [127 130 136 145 158 178 211];>> pop = [127 130 136 145 158 178 211];

배열은 배열은 MATLABMATLAB 이 데이터를 저장하고 다루기 위해 사용하는 이 데이터를 저장하고 다루기 위해 사용하는 기본적인 형태로서기본적인 형태로서 , , 행행 (row)(row) 이나 열이나 열 (column), (column), 또는 행과 열로 또는 행과 열로 정렬된 수들의 나열이다정렬된 수들의 나열이다 . .

11 차원 배열차원 배열 (( 벡터벡터 )) 로 나타낼 수 있는 예 로 나타낼 수 있는 예 : : 33 차원 공간의 한 점 차원 공간의 한 점 PP 의 좌표가 의 좌표가 (2, 5, 6)(2, 5, 6) 일 때 이 좌표를일 때 이 좌표를

배열 배열 [2 5 6][2 5 6] 또는 또는 [2, 5, 6][2, 5, 6] 으로 나타낼 수 있다으로 나타낼 수 있다 ..

11 차원 배열의 생성차원 배열의 생성 (1/2)(1/2)

Page 4: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 4/53

11 차원 배열의 생성차원 배열의 생성 (2/2)(2/2)

배열의 생성 방법배열의 생성 방법 꺾은 괄호 꺾은 괄호 [ ] [ ] 안에 배열의 원소들을 직접 입력함안에 배열의 원소들을 직접 입력함 외부 데이터 파일로부터 행렬을 읽어 들임외부 데이터 파일로부터 행렬을 읽어 들임 MATLAB MATLAB 명령어나 자신이 만든 명령어나 자신이 만든 m m 파일을 이용하여 행렬을 생성시킴파일을 이용하여 행렬을 생성시킴

벡터의 각 원소는 수벡터의 각 원소는 수 , , 또는 미리 정의된 변수들또는 미리 정의된 변수들 , , 함수들이 포함된 함수들이 포함된 수학식 등이 될 수 있다수학식 등이 될 수 있다 . .

알려진 수 집합을 행벡터알려진 수 집합을 행벡터 (row vector)(row vector) 로 만들기로 만들기 꺾은 괄호 꺾은 괄호 [ ] [ ] 안에 알려진 원소들을 기입하며안에 알려진 원소들을 기입하며 , , 원소와 원소는 공백이나 원소와 원소는 공백이나

콤마콤마 (,)(,) 로 구분한다로 구분한다 . .

variable_name = [variable_name = [ 벡터 원소들의 나열벡터 원소들의 나열 ]]

>> t = [5, 7, 2, 4 10 29] >> t = [5, 7, 2, 4 10 29] % % 공백이나 콤마로 원소를 구분한다공백이나 콤마로 원소를 구분한다

>> t = [0, 0.4*pi, 0.8*pi, 1.2*pi, 1.5*pi, 2*pi]; >> t = [0, 0.4*pi, 0.8*pi, 1.2*pi, 1.5*pi, 2*pi]; % % 수식표현도 가능하다수식표현도 가능하다

>> t = [0 0.4 0.8 1.2 1.5 2]*pi >> t = [0 0.4 0.8 1.2 1.5 2]*pi % % 위의 결과와 같다위의 결과와 같다

Page 5: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 5/53

열벡터열벡터 (Column vector)(Column vector) 의 생성의 생성

열벡터열벡터 (Column vector)(Column vector) 를 생성하는 세 가지 방법를 생성하는 세 가지 방법 꺾은 괄호 속에서 원소 뒤에 세미콜론꺾은 괄호 속에서 원소 뒤에 세미콜론 (;)(;) 을 입력하면 줄이 바뀐다을 입력하면 줄이 바뀐다 ..

각 원소 뒤에서 각 원소 뒤에서 Enter Enter 키를 눌러 바뀐 줄에 새로운 원소를 입력한다키를 눌러 바뀐 줄에 새로운 원소를 입력한다 ..

행벡터 입력을 마친 후 꺾은 괄호 뒤에 따옴표행벡터 입력을 마친 후 꺾은 괄호 뒤에 따옴표 ((' )) 를 입력하여 를 입력하여 행벡터를 전치행벡터를 전치 (transpose)(transpose) 시킨다시킨다 ..

>> v = [3; 4; 5] >> v = [3; 4; 5]

v = 3v = 3

44

55

>> v = [3>> v = [3

44

5] 5]

v = 3v = 3

44

55

>> v = [3 4 5]>> v = [3 4 5]'

v = 3v = 3

44

55

Page 6: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 6/53

일정한 간격으로 커지는 행벡터의 일정한 간격으로 커지는 행벡터의 생성생성

일정한 간격으로 커지는 원소들을 가진 벡터는 일정한 간격으로 커지는 원소들을 가진 벡터는 콜론콜론 (:)(:) 을 사용하여 을 사용하여 생성한다생성한다 ..

variable_name = [m : q : n] or variable_name = m : q : nvariable_name = [m : q : n] or variable_name = m : q : n

oror variable_name = (m : q : n)variable_name = (m : q : n)

mm 은 첫번째 원소이며은 첫번째 원소이며 , m+q, m+2q, … , m+q, m+2q, … 와 같이 와 같이 qq 씩 커지면서 원소가 씩 커지면서 원소가 생성되고생성되고 , , 최종 원소는 최종 원소는 nn 을 초과할 수 없다을 초과할 수 없다 . .

m-nm-n 이 이 qq 의 정수배이면 최종원소는 의 정수배이면 최종원소는 nn 이지만이지만 , , 그렇지 않으면 그렇지 않으면 nn보다 작은 값이 된다보다 작은 값이 된다 . n. n 이 생략되면 원소는 이 생략되면 원소는 11 씩 커진다씩 커진다 . q. q 가 가 음수인 경우 음수인 경우 mm 은 반드시 은 반드시 nn 보다 커야 한다보다 커야 한다 ..

>> x = [1:2:8] >> x = [1:2:8] >> x=(0:0.5:1)*pi>> x=(0:0.5:1)*pi

x=1 3 5 7 x=1 3 5 7 x=0 1.5708 3.1416 x=0 1.5708 3.1416

>> x=15:>> x=15:--3:83:8 >> t= >> t= --1:0.5:11:0.5:1

x=15 12 9x=15 12 9 t= t=--1.0000 1.0000 --0.5000 0 0.5000 1.00000.5000 0 0.5000 1.0000

Page 7: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 7/53

원소의 개수를 지정하여 행벡터 원소의 개수를 지정하여 행벡터 생성하기생성하기

시작원소 시작원소 xixi 와 최종원소 와 최종원소 xfxf, , 원소의 개수 원소의 개수 nn 이 정해져 있을 때이 정해져 있을 때 , , 일정한 간격을 가진 벡터의 생성은 일정한 간격을 가진 벡터의 생성은 linspacelinspace 명령을 이용한다명령을 이용한다 ..

variable_name = linspace(xi, xf, n)variable_name = linspace(xi, xf, n)

콜론에 의한 벡터 생성과 달리 최종원소의 값은 항상 콜론에 의한 벡터 생성과 달리 최종원소의 값은 항상 xf xf 이다이다 .. 원소는 원소는 ((xfxf – – xixi)/()/(nn--11)) 만큼씩 증가한다만큼씩 증가한다 .. 원소 개수 원소 개수 nn 을 생략하면을 생략하면 , , 기본적으로 기본적으로 100100 개의 원소를 생성한다개의 원소를 생성한다 ..

>> x = linspace(2, 14, 6) >> x = linspace(2, 14, 6) % 2% 2 부터 부터 1414 까지 까지 66 개의 원소를 생성개의 원소를 생성x = 2.0000 4.4000 6.8000 9.2000 11.6000 14.0000x = 2.0000 4.4000 6.8000 9.2000 11.6000 14.0000

>> delta_x = (14-2)/5>> delta_x = (14-2)/5 delta_x = 2.4delta_x = 2.4

>> t = 2:delta_x:14>> t = 2:delta_x:14t = t = 2.0000 4.4000 6.8000 9.2000 11.6000 14.00002.0000 4.4000 6.8000 9.2000 11.6000 14.0000

>> y = linspace( 0.1, 10) >> y = linspace( 0.1, 10) % % 개수를 지정하지 않으면 무조건 개수를 지정하지 않으면 무조건 100100 개 생성개 생성y =y = 0.1000 0.2000 0.3000 … 9.8000 9.9000 10.0000 0.1000 0.2000 0.3000 … 9.8000 9.9000 10.0000

Page 8: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 8/53

log10100

( = 0 )log10101

( = 1 )log10102

( = 2 )

11 11

log10103

( = 3 )

11>> t = logspace(0, 3, 4)t =t = 1 10 100 10001 10 100 1000

>> x= logspace(1, 5, 3)x =x = 10 1000 10000010 1000 100000>> y=logspace(1, 2, 4)y =y = 10.0000 21.5443 46.4159 100.000010.0000 21.5443 46.4159 100.0000

logspacelogspace 명령어에 의한 벡터 생성명령어에 의한 벡터 생성

로그적으로 같은 간격을 가진 행벡터 (row vector) 를 생성한다 .

y = logspace(a, b, n)

a 와 b 사이가 아니라 10a 와 10b 사이에 n 개의 로그적으로 같은 간격의 행벡터를 생성한다 .

n 이 생략되면 50 개의 원소를 생성한다 .

Page 9: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 9/53

‘ ’ ‘ ’ 표시는 표시는 공백을 의미함공백을 의미함

복소수 벡터복소수 벡터

복소수를 벡터의 원소로 입력할 때 복소수에는 어떠한 공백도 복소수를 벡터의 원소로 입력할 때 복소수에는 어떠한 공백도 있어서는 안 된다있어서는 안 된다 .. 예를 들어 복소수 예를 들어 복소수 1-2i 1-2i 를 벡터의 원소로 입력할 때 를 벡터의 원소로 입력할 때 모든 글자는 공백 없이 붙여 써야 한다모든 글자는 공백 없이 붙여 써야 한다 . . 만일 만일 1 1 --2i2i 와 같이 와 같이 11 과 과 --2i2i 를 를 띄어 쓰면 두 개의 원소로 인식하게 된다띄어 쓰면 두 개의 원소로 인식하게 된다 ..

>> c1 = [1-2i 3 5+6i] >> c1 = [1-2i 3 5+6i] % % 세 개의 원소를 가진 벡터세 개의 원소를 가진 벡터

c1 = 1.0000 - 2.0000i 3.0000 5.0000 + 6.0000ic1 = 1.0000 - 2.0000i 3.0000 5.0000 + 6.0000i

>> >> c2 = [c2 = [11 -2i-2i 3 3 5+5+6i6i] ] % % 복소수의 공백으로 복소수의 공백으로 44 개의 원소로 인식개의 원소로 인식

% % 그러나 그러나 5+ 5+ 다음의 공백은 다음의 공백은 ++ 연산자로 인해 무시된다연산자로 인해 무시된다 ..

c2 = 1.0000 c2 = 1.0000 0 - 2.0000i 0 - 2.0000i 3.0000 3.0000 5.0000 + 6.0000i5.0000 + 6.0000i

>> >> c3 = [(1c3 = [(1-2i) 3 ( 5+-2i) 3 ( 5+ 6i)] 6i)] % % 괄호로 인해 공백이 무시된다괄호로 인해 공백이 무시된다 ..

c2 = 1.0000 - 2.0000i 3.0000 5.0000 + 6.0000ic2 = 1.0000 - 2.0000i 3.0000 5.0000 + 6.0000i

Page 10: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 10/53

세미콜론세미콜론

35128

7316

1042

A

22 차원 배열은 행렬차원 배열은 행렬 (matrix)(matrix) 로도 불리며 다수의 행과 열을 갖는다로도 불리며 다수의 행과 열을 갖는다 . .

세미콜론세미콜론 (;)(;) 이나 이나 엔터엔터 (Enter)(Enter) 키는 새로운 열키는 새로운 열 (row)(row) 을 만드는 을 만드는 역할을 하므로 원소들 끝에 세미콜론을 입력하거나 엔터 키를 역할을 하므로 원소들 끝에 세미콜론을 입력하거나 엔터 키를 누름으로써 원하는 행렬을 만들 수 있다누름으로써 원하는 행렬을 만들 수 있다 ..

22 차원 배열차원 배열 (( 행렬행렬 )) 의 생성의 생성

>> A=[2 4 10; 16 3 7; 8 12 35]>> A=[2 4 10; 16 3 7; 8 12 35]

A =A = 2 4 102 4 10 16 3 716 3 7

8 8 12 35 12 35

의 입력

>> A=[2 4 10>> A=[2 4 1016 3 716 3 78 12 35]8 12 35]

A =A = 2 4 102 4 10 16 3 716 3 7 8 12 358 12 35

Enter Enter 키키

Page 11: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 11/53

>> A=[2 4 10;linspace(8, -2, >> A=[2 4 10;linspace(8, -2, 3)]3)]

A =A = 2 4 102 4 10 8 3 -28 3 -2>> A=[2 4 10; 8: >> A=[2 4 10; 8: --5: 5: --2 ]2 ]A =A = 2 4 102 4 10 8 3 -28 3 -2>> A=[A; 10 20 30]>> A=[A; 10 20 30]A =A = 2 4 102 4 10 8 3 -28 3 -2 10 20 3010 20 30

행렬 원소는 숫자 뿐만 아니라 계산이 가능한 수식행렬 원소는 숫자 뿐만 아니라 계산이 가능한 수식 , , 변수도 가능하변수도 가능하다다 . . 또 또 linspacelinspace 나 콜론나 콜론 (:)(:) 을 이용하여 원소를 자동으로 생성하는 을 이용하여 원소를 자동으로 생성하는 것도 가능하다것도 가능하다 ..

행렬 생성의 다양한 방법행렬 생성의 다양한 방법 (1/2)(1/2)

>> x=4; y=2; z=8; >> x=4; y=2; z=8; % % 세 변수의 정의세 변수의 정의>> A=[x y z>> A=[x y z;; sin(x/z) x^2 x+y] sin(x/z) x^2 x+y]A =A = 4.0000 2.0000 8.00004.0000 2.0000 8.0000 0.4794 16.0000 6.00000.4794 16.0000 6.0000

>> A=[1:2:11; 0:5:25;>> A=[1:2:11; 0:5:25;linspace(10, 60, 6);67 2 43 68 4 13]linspace(10, 60, 6);67 2 43 68 4 13]A=A= 1 3 5 7 9 111 3 5 7 9 11 0 5 10 15 20 250 5 10 15 20 25 10 20 30 40 50 6010 20 30 40 50 60 67 2 43 68 4 1367 2 43 68 4 13

Page 12: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 12/53

행렬 생성의 다양한 방법행렬 생성의 다양한 방법 (2/2)(2/2)

>> r1=[2, 4, 10]; r2=[16, 3, 7];>> r1=[2, 4, 10]; r2=[16, 3, 7];

>> A=[r1; r2]>> A=[r1; r2]

A = 2 4 10A = 2 4 10

16 3 716 3 7

>> A=[[2, 4, 10]; [16, 3, 7]] >> A=[[2, 4, 10]; [16, 3, 7]] % % A=[2, 4, 10; 16, 3, 7]A=[2, 4, 10; 16, 3, 7] 과 같다과 같다 ..

A =A =

2 4 102 4 10

16 3 716 3 7

>> v=[r1 r2]>> v=[r1 r2]

v = 2 4 10 v = 2 4 10 16 3 716 3 7

>> >> cd=6; h=4;cd=6; h=4;

>> Mat=[3, cd*h, cos(pi/3) ; h^2, sqrt(h*h/cd), 14]>> Mat=[3, cd*h, cos(pi/3) ; h^2, sqrt(h*h/cd), 14]

Mat=Mat=

3.0000 24.0000 0.50003.0000 24.0000 0.5000

16.0000 1.6330 14.000016.0000 1.6330 14.0000

Page 13: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 13/53

행렬 명령어 행렬 명령어 –– zeros, ones, eye zeros, ones, eye

zeros(m, n), ones(m, n), eye(n) zeros(m, n), ones(m, n), eye(n) 명령들은 특수한 원소들을 갖는 명령들은 특수한 원소들을 갖는 행렬을 만드는 데 사용된다행렬을 만드는 데 사용된다 ..

zeros(m, n) : zeros(m, n) : 원소가 모두 원소가 모두 00 인 인 m m n n 크기의 행렬크기의 행렬 ones(m, n) : ones(m, n) : 원소가 모두 원소가 모두 11 인 인 m m n n 크기의 행렬크기의 행렬 eye(n) : eye(n) : 대각선 원소만 대각선 원소만 11 이고 나머지 원소들은 모두 이고 나머지 원소들은 모두 00 인 인 n n n n 의 행렬의 행렬

>> Z >> Z = zeros(2 : 3)= zeros(2 : 3)Z =Z =

0 0 00 0 0 0 0 00 0 0>> O = ones(2, 2)>> O = ones(2, 2)O =O = 1 11 1 1 11 1

>> I >> I = eye(3)= eye(3)I =I = 1 0 01 0 0 0 1 00 1 0 0 0 10 0 1>> B = ones(size(Z))>> B = ones(size(Z))B =B = 1 1 11 1 1 1 1 11 1 1

Page 14: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 14/53

MATLAB MATLAB 변수에 대한 유의사항변수에 대한 유의사항

MATLABMATLAB 의 모든 변수들은 배열이다의 모든 변수들은 배열이다 .. 스칼라는 원소가 하나인 스칼라는 원소가 하나인 배열이고배열이고 , , 벡터는 원소들의 행이나 열이 하나인 배열이며벡터는 원소들의 행이나 열이 하나인 배열이며 , , 행렬은 행렬은 원소들이 행과 열로 되어 있는 배열이다원소들이 행과 열로 되어 있는 배열이다 . .

변수변수 (( 스칼라스칼라 , , 벡터벡터 , , 행렬행렬 )) 는 변수가 할당될 때의 입력에 의해 는 변수가 할당될 때의 입력에 의해 정의된다정의된다 . . 원소를 할당하기 전에 배열의 크기를 정의할 필요는 없다원소를 할당하기 전에 배열의 크기를 정의할 필요는 없다 ..

변수가 스칼라나 벡터변수가 스칼라나 벡터 , , 또는 행렬로서 존재하면또는 행렬로서 존재하면 , , 이 변수의 크기나 이 변수의 크기나 유형은 마음대로 변경할 수 있다유형은 마음대로 변경할 수 있다 . .

스칼라 스칼라 ⇒⇒ 벡터 벡터 , , 또는 행렬또는 행렬 벡터 벡터 ⇒ ⇒ 스칼라스칼라 , , 다른 크기의 벡터다른 크기의 벡터 , , 또는 행렬또는 행렬 행렬의 크기를 바꾸거나 벡터나 스칼라로 축소시킬 수도 있다행렬의 크기를 바꾸거나 벡터나 스칼라로 축소시킬 수도 있다 ..

Page 15: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 15/53

>> A=[1 2 3; 10 20 30]>> A=[1 2 3; 10 20 30]

A =A = 1 2 31 2 3 10 20 3010 20 30>> B=A>> B=A’’B=B=

1 101 10 2 202 20 3 303 30

전치전치 (transpose) (transpose) 연산자연산자

>> v=[10; 20; 30];>> v=[10; 20; 30];>> vt = v>> vt = v’’

vt =vt = 10 20 3010 20 30>> x=[10 20 30]; xt = x>> x=[10 20 30]; xt = x’’

xt =xt =101020203030

행벡터를 열벡터로행벡터를 열벡터로 , , 열벡터를 행벡터로 변환하거나열벡터를 행벡터로 변환하거나 , , 행렬의 행과 행렬의 행과 열을 바꾸는 전치 연산은 벡터나 행렬 뒤에 따옴표열을 바꾸는 전치 연산은 벡터나 행렬 뒤에 따옴표 (('')) 를 붙이면 된다를 붙이면 된다 ..

Page 16: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 16/53

>> C=[1 2+3i; 2-3i 4]>> C=[1 2+3i; 2-3i 4]

C = 1 2+3iC = 1 2+3i 2-3i 42-3i 4>> C‘>> C‘ans = 1 2+3ians = 1 2+3i 2-3i 42-3i 4>> C. >> C. ''ans = 1 2-3ians = 1 2-3i 2+3i 42+3i 4

복소수 행렬의 전치복소수 행렬의 전치 (transpose) (transpose)

(1/2) (1/2)

>> >> v=[1+2i 3+4i]v=[1+2i 3+4i]

v =v = 1.0000+2.0000i 3.0000+4.0000i1.0000+2.0000i 3.0000+4.0000i>> w=v>> w=v'' w = 1.0000 - 2.0000w = 1.0000 - 2.0000ii 3.0000 - 4.00003.0000 - 4.0000ii>> x=v.>> x=v.''x = 1.0000 + 2.0000x = 1.0000 + 2.0000ii 3.0000 + 4.00003.0000 + 4.0000ii

복소수 벡터나 복소수 행렬을 전치시키면복소수 벡터나 복소수 행렬을 전치시키면 , , 복소수 원소는 모두 복소수 원소는 모두 공액복소수로 바뀐 다음에 전치공액복소수로 바뀐 다음에 전치 (complex conjugate transpose)(complex conjugate transpose) 된다는 된다는 점에 주의점에 주의 ..

복소수 벡터나 복소수 행렬을 공액복소수 변환없이 단순히 전치만 복소수 벡터나 복소수 행렬을 공액복소수 변환없이 단순히 전치만 시키고자 하는 경우에는 시키고자 하는 경우에는 .' .' 와 같이 마침표와 따옴표를 같이 와 같이 마침표와 따옴표를 같이 사용한다사용한다 . .

Page 17: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 17/53

복소수 행렬의 전치복소수 행렬의 전치 (transpose)(transpose)

(2/2) (2/2)

>> r >> r = 1 : 3;= 1 : 3;>> C = r + r*i>> C = r + r*i

C =C = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i>> Ct = C>> Ct = C' '

Ct =Ct = 1.0000 - 1.0000i1.0000 - 1.0000i 2.0000 - 2.0000i2.0000 - 2.0000i 3.0000 - 3.0000i3.0000 - 3.0000i>> Cdt=C.>> Cdt=C.''Cdt =Cdt = 1.0000 + 1.0000i1.0000 + 1.0000i 2.0000 + 2.0000i2.0000 + 2.0000i 3.0000 + 3.0000i3.0000 + 3.0000i

Page 18: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 18/53

벡터 원소의 주소 지정벡터 원소의 주소 지정 (Array (Array addressing)addressing)

행렬이나 배열에서 한 개 또는 여러 개의 원소의 위치를 찾거나 행렬이나 배열에서 한 개 또는 여러 개의 원소의 위치를 찾거나 접근할 수 있다접근할 수 있다 . . 이것은 이것은 행렬이나 배열의 일부 원소들의 값을 행렬이나 배열의 일부 원소들의 값을 갱신하거나 계산에서 특정 원소를 이용하려고 할 때갱신하거나 계산에서 특정 원소를 이용하려고 할 때 , , 또는 일부 또는 일부 원소들을 새 변수에 할당하고자 할 때 원소들을 새 변수에 할당하고자 할 때 유용하게 사용될 수 있다유용하게 사용될 수 있다 . .

벡터에서 원소의 주소는 첫번째 원소로부터 해당 원소의 순서이벡터에서 원소의 주소는 첫번째 원소로부터 해당 원소의 순서이다다 .. 벡터 벡터 vv 에서 에서 v(k)v(k) 는 는 kk 번째의 벡터 번째의 벡터 vv 의 원소의 원소를 나타낸다를 나타낸다 . .

즉즉 , , 벡터 벡터 v=[12 8 9 6 28]v=[12 8 9 6 28] 에서에서 v(1)=12, v(3)=9, v(5)=28v(1)=12, v(3)=9, v(5)=28 이다이다 . . 벡터의 한 원소를 나타내는 벡터의 한 원소를 나타내는 v(k)v(k) 는 변수처럼 사용할 수 있으므로 는 변수처럼 사용할 수 있으므로 수학식에도 사용할 수 있다수학식에도 사용할 수 있다 . .

>> v(3)>> v(3)ans = 9ans = 9>> v(3)=80; >> v(3)=80; % % 세 번째 원소의 값 변경세 번째 원소의 값 변경>> v(4)=v(3)/8+3 >> v(4)=v(3)/8+3 % % 수학식을 이용한 네 번째 원소의 변경수학식을 이용한 네 번째 원소의 변경v =v = 12 8 12 8 8080 1313 28 28

Page 19: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 19/53

벡터 원소의 주소 지정 예벡터 원소의 주소 지정 예

>> VCT=[35 46 78 23 5 14 81 3 55]>> VCT=[35 46 78 23 5 14 81 3 55]VCT =VCT = 35 46 78 23 5 14 81 3 5535 46 78 23 5 14 81 3 55

>> VCT(4) >> VCT(4) % % 네 번째 원소를 출력함네 번째 원소를 출력함ans =ans = 2323

>> VCT(6)=273 >> VCT(6)=273 % 6 % 6 번째 원소에 새로운 값을 할당함번째 원소에 새로운 값을 할당함VCT=VCT= 35 46 78 23 5 35 46 78 23 5 273273 81 3 55 81 3 55

>> VCT(2)+VCT(8) >> VCT(2)+VCT(8) % % 수학식에 벡터 원소를 사용함수학식에 벡터 원소를 사용함ans = ans = 4949

>> VCT(5)^VCT(8)+sqrt(VCT(7))>> VCT(5)^VCT(8)+sqrt(VCT(7))ans =ans = 134134

Page 20: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 20/53

행렬 원소의 주소 지정행렬 원소의 주소 지정

행렬원소의 주소는 원소가 있는 열행렬원소의 주소는 원소가 있는 열 (row)(row) 과 행과 행 (column)(column) 의 위치이다의 위치이다 . . 행렬 행렬 AA

에서 에서 A(r, c)A(r, c) 는 행렬 는 행렬 AA 의 의 rr 번째 열과 번째 열과 cc 번째 행에 위치한 원소를 나타낸다번째 행에 위치한 원소를 나타낸다 ..

행렬 행렬 AA 가 이면가 이면 , , A(1,1)=5, A(2,2)=1, A(3,3)=3A(1,1)=5, A(2,2)=1, A(3,3)=3 이다이다 ..

>> A >> A = [5 10 9 8; 18 1 7 11; 29 14 3 6]; = [5 10 9 8; 18 1 7 11; 29 14 3 6]; % 3% 3xx4 4 행렬을 행렬을 생성함생성함

>> A(3,1)=13 >> A(3,1)=13 % % 위치 위치 ((3,1)3,1) 의 원소에 새로운 값을 의 원소에 새로운 값을 할당함할당함

A = 5 10 9 8A = 5 10 9 8 18 1 7 1118 1 7 11 1313 14 3 6 14 3 6

>> A(2,1) = A(2,1)-A(2,4) >> A(2,1) = A(2,1)-A(2,4) % % 수학식에 원소를 사용함수학식에 원소를 사용함A = 5 10 9 8A = 5 10 9 8 7 1 7 117 1 7 11 13 14 3 613 14 3 6

631429

117118

89105

A

Page 21: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 21/53

콜론콜론 (:)(:) 을 이용한 벡터의 주소 지정을 이용한 벡터의 주소 지정 (1/2)(1/2)

콜론을 이용하여 벡터나 행렬의 일정 범위의 원소들을 지정할 수 있다콜론을 이용하여 벡터나 행렬의 일정 범위의 원소들을 지정할 수 있다 . . 벡터 벡터 vv 의 경우의 경우

vv(:)(:) : : 벡터 벡터 vv 의 의 모든 원소를 열벡터로모든 원소를 열벡터로 나타낸다 나타낸다 ..

vv(m:n)(m:n) : : 벡터 벡터 vv 의 의 m m 번째 원소에서 번째 원소에서 n n 번째 원소까지번째 원소까지의 원소들을 나타낸의 원소들을 나타낸다다 ..

endend 는 벡터나 행렬의 는 벡터나 행렬의 마지막 원소의 주소마지막 원소의 주소를 나타내는 데 사용되며를 나타내는 데 사용되며 , , 벡터의 벡터의 경우 경우 endend 는 명령어 는 명령어 length(length( 벡터벡터 )) 의 실행 결과와 같은 값을 갖는다의 실행 결과와 같은 값을 갖는다 ..

>> v=[10 20 30 40 50]>> v=[10 20 30 40 50];;>> v(3)>> v(3)ansans = 30 = 30>> w=v(2:4)>> w=v(2:4)w =w = 20 30 40 20 30 40 >> length(v)>> length(v)ans = 5ans = 5

>> v=[10 20 30 40 50]>> v=[10 20 30 40 50];;>> x=v(2:end)>> x=v(2:end)

x = 20 30 40 50x = 20 30 40 50>> y=v(2: length(v))>> y=v(2: length(v))y = 20 30 40 50y = 20 30 40 50

>> >> v(3:end)=0v(3:end)=0v =v = 10 20 0 0 010 20 0 0 0

Page 22: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 22/53

콜론콜론 (:)(:) 을 이용한 벡터의 주소 지정을 이용한 벡터의 주소 지정 (2/2)(2/2)

>> v=[10 20 30 40 50]>> v=[10 20 30 40 50];;>> w = v(3 :>> w = v(3 :--1 : 1) 1 : 1) % % v(3), v(2), v(1) v(3), v(2), v(1) 원소를 가진 벡터 생성원소를 가진 벡터 생성w =w = 30 20 1030 20 10>> y=v(2:3:5) >> y=v(2:3:5) % v(2), v(5) % v(2), v(5) 원소를 가진 벡터 생성원소를 가진 벡터 생성y =y = 20 5020 50>> z =v( [1 3 4] ) >> z =v( [1 3 4] ) % v(1), v(3), v(4) % v(1), v(3), v(4) 원소를 가진 벡터 생성원소를 가진 벡터 생성z =z = 10 30 4010 30 40>> vt=z>> vt=z( :) ( :) % % 콜론에 의한 전체 원소의 선택은 전치와 동일 콜론에 의한 전체 원소의 선택은 전치와 동일

효과효과vt =vt = 1010 3030 4040

Page 23: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 23/53

콜론을 이용한 행렬의 주소 지정 콜론을 이용한 행렬의 주소 지정 (1/2)(1/2)

콜론을 이용하여 행렬 콜론을 이용하여 행렬 AA 의 일부 행이나 열을 지정할 수 있다의 일부 행이나 열을 지정할 수 있다 ..A( :, n)A( :, n) 행렬 행렬 AA 의 의 nn 번째 열번째 열 (column)(column) 의 모든 원소의 모든 원소를 가리킴를 가리킴A(n, : )A(n, : ) 행렬 행렬 AA 의 의 nn 번째 행번째 행 (row)(row) 의 모든 원소의 모든 원소를 가리킴를 가리킴A(:, m:n)A(:, m:n) 행렬 행렬 AA 의 의 m ~ nm ~ n 번째 열번째 열 (column)(column) 의 모든 원소의 모든 원소를 가리킴를 가리킴A(m:n, :)A(m:n, :) 행렬 행렬 AA 의 의 m ~ nm ~ n 번째 행번째 행 (row)(row) 의 모든 원소의 모든 원소를 가리킴를 가리킴A(m:n, p:q)A(m:n, p:q) m ~ nm ~ n 번째 행과 번째 행과 p~qp~q 번째 열에 해당하는 원소번째 열에 해당하는 원소를 가리킴를 가리킴

>> A >> A =[2 4 13 9;16 3 7 11;8 21 6 5];=[2 4 13 9;16 3 7 11;8 21 6 5];>> C = A(2:3, 1:3)>> C = A(2:3, 1:3)C = 16 3 7C = 16 3 7 8 21 68 21 6

>> D=A(: , 2) >> E=A(1:2, :)>> D=A(: , 2) >> E=A(1:2, :)D = 4 E = D = 4 E = 3 2 4 13 93 2 4 13 9 21 16 3 7 1121 16 3 7 11

56218

117316

91342

A

Page 24: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 24/53

콜른을 이용한 행렬의 주소 지정 콜른을 이용한 행렬의 주소 지정 (2/2)(2/2)

>> B=[ 9:>> B=[ 9:--2:1; zeros(1, 3) 1 2; ones(2, 5)*2 ]2:1; zeros(1, 3) 1 2; ones(2, 5)*2 ]B =B = 99 77 55 3 3 1 1 0 0 0 1 20 0 0 1 2 2 2 2 2 22 2 2 2 2 2 2 2 2 22 2 2 2 2

>> B(:, end) = 1>> B(:, end) = 1B =B = 99 77 55 3 3 1 1 0 0 0 1 10 0 0 1 1 2 2 2 2 12 2 2 2 1 2 2 2 2 12 2 2 2 1

>> C= B( [1 3], [1, 3:4] )>> C= B( [1 3], [1, 3:4] )C =C = 9 5 39 5 3 2 2 22 2 2

>> D=[11 12 13;21 22 23]>> D=[11 12 13;21 22 23]D =D = 11 12 1311 12 13 21 22 2321 22 23

>> v >> v =D(:) =D(:) v =v = 1111 2121 1212 2222 1313 2323>> >> v=vv=v’’v =v = 11 21 12 22 13 2311 21 12 22 13 23

행렬의 벡터 변환행렬의 벡터 변환

232221

131211D

Page 25: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 25/53

행렬의 주소 지정행렬의 주소 지정

>> A=[2 4 10 13; 16 3 7 1;8 4 9 21]>> A=[2 4 10 13; 16 3 7 1;8 4 9 21]A =A = 2 4 10 132 4 10 13 16 3 7 116 3 7 1 8 4 9 218 4 9 21>> indx = [1 2];>> indx = [1 2];>> B = A(indx, indx)>> B = A(indx, indx)B =B =

2 42 4

16 316 3

>> v=[ A(3), A(4), A(7) ]>> v=[ A(3), A(4), A(7) ]v =v = 8 4 108 4 10>> size(A), length(A) >> size(A), length(A) ans = 3 4ans = 3 4ans = 4ans = 4

21948

17316

131042

A

A(4)=A(1,2)

A(7)=A(1,3)A(10)=A(1,4)

2) (2,1) (1,

2) (2,1) (1,

) 2] [1 2], [1 (

AA

AA

A

length(A) 는 max(size(A)) 와 같다 .

Page 26: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 26/53

벡터의 확장 및 축소벡터의 확장 및 축소 (1/2)(1/2)

>> DF=1:4 >> DF=1:4 % % 벡터 벡터 DFDF 를 를 44 개의 원소로 정의함개의 원소로 정의함DF =DF = 1 2 3 41 2 3 4>> >> DF(5:10)=10:5:35 DF(5:10)=10:5:35 % 5 % 5 번째부터 시작하여 번째부터 시작하여 66 개의 원소를 추가함개의 원소를 추가함DF = DF = 1 2 3 41 2 3 4 10 15 20 25 30 35 10 15 20 25 30 35>> AD=[5 7 2] >> AD=[5 7 2] % % 33 개의 원소를 가진 벡터 개의 원소를 가진 벡터 ADAD 를 정의함를 정의함AD = AD = 5 7 25 7 2>> AD(8)=4 >> AD(8)=4 % 4 ~ 7 % 4 ~ 7 번째 원소가 번째 원소가 00 으로 자동 채워짐으로 자동 채워짐AD = AD = 5 7 25 7 2 0 0 0 0 4 0 0 0 0 4>> v(4)=5 >> v(4)=5 % 4% 4 번째 원소까지 번째 원소까지 00 이 자동으로 채워짐이 자동으로 채워짐v = v = 0 0 0 0 50 0 0 0 5

MATLAB 에서는 변수를 벡터나 행렬로 미리 선언해 줄 필요가 없다 . 즉 , 스칼라 변수일지라도 벡터나 행렬로 확장할 수 있으며 , 이미 만들어진 벡터나 행렬의 크기도 바꿀 수 있다 .

Page 27: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 27/53

벡터의 확장 및 축소벡터의 확장 및 축소 (2/2)(2/2)

>> RE=[3 8 1 24];>> RE=[3 8 1 24];>> GT=4:3:16;>> GT=4:3:16;>> KNH = [RE GT] >> KNH = [RE GT] % RE% RE 와 와 GTGT 를 붙여서 새로운 벡터 를 붙여서 새로운 벡터 KNHKNH 를 를

정의함정의함 ..KNH =KNH = 3 8 1 24 4 7 10 13 163 8 1 24 4 7 10 13 16>> v=10 >> v=10 % v% v 를 스칼라 변수로 지정를 스칼라 변수로 지정v = 10v = 10>> >> v(end+1) = 20 v(end+1) = 20 % % 스칼라 변수를 두 원소 벡터 변수로 확장스칼라 변수를 두 원소 벡터 변수로 확장v =v = 10 2010 20>> v(end+1 : length(v)+3)=[3 4 5] >> v(end+1 : length(v)+3)=[3 4 5] % 5% 5 원소 벡터로 확장원소 벡터로 확장v =v = 10 20 3 4 510 20 3 4 5>> >> n = length(v) n = length(v) % % 벡터의 길이벡터의 길이 (( 원소의 개수원소의 개수 )) 를 확인한다를 확인한다n= 5n= 5>> v(n)=50 >> v(n)=50 % % 벡터의 마지막 원소를 벡터의 마지막 원소를 5050 으로 대체한다으로 대체한다 ..ans = ans = 10 20 3 4 5010 20 3 4 50

Page 28: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 28/53

행렬의 확장행렬의 확장 (1/2)(1/2)

기존 행렬에 새로운 행이나 열을 추가할 수 있는데기존 행렬에 새로운 행이나 열을 추가할 수 있는데 , , 이때 추가되는 행이때 추가되는 행(( 열열 )) 의 길이는 기존 행렬과 맞아야 한다의 길이는 기존 행렬과 맞아야 한다 ..

>> E=[1 2 3 4; 5 6 7 8];>> E=[1 2 3 4; 5 6 7 8];E = 1 2 3 4E = 1 2 3 4 5 6 7 85 6 7 8>> E(3, : )=[10:4:22]>> E(3, : )=[10:4:22]E = 1 2 3 4E = 1 2 3 4 5 6 7 85 6 7 8 10 14 18 2210 14 18 22

>> >> K=eye(3)K=eye(3);;K = 1 0 0K = 1 0 0 0 1 00 1 0 0 0 10 0 1>> G=[E >> G=[E KK] ] % % 행렬행렬 KK 를 행렬 를 행렬 EE 에 에

추가함추가함 ..G =G = 1 2 3 4 1 2 3 4 1 0 01 0 0 5 6 7 8 5 6 7 8 0 1 00 1 0 10 14 18 22 10 14 18 22 0 0 10 0 1

>> E(3, 4)=1>> E(3, 4)=1E = 1 2 3 4E = 1 2 3 4 5 6 7 85 6 7 8 0 0 0 10 0 0 1

>> H(3,4)=8 >> H(3,4)=8 H = H =           0    0    0    0 0    0    0    0           0    0    0    0 0    0    0    0           0    0    0   0    0    0   88

벡터 벡터 [10 14 18 22][10 14 18 22] 를 를 EE의 셋째 행으로 추가함의 셋째 행으로 추가함

Page 29: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 29/53

행렬의 확장 행렬의 확장 (2/2)(2/2)

>> A=[11 12 13 14;21 22 23 24]>> A=[11 12 13 14;21 22 23 24]A =A = 11 12 13 1411 12 13 14 21 22 23 2421 22 23 24>> >> A(3, :)A(3, :) = 31:34 = 31:34AA = =

11 12 13 1411 12 13 14

21 22 23 2421 22 23 24

31 32 33 3431 32 33 34

>> B=ones(3, 1);>> B=ones(3, 1);>> A=[A B]>> A=[A B]A =A = 11 12 13 14 111 12 13 14 1 21 22 23 24 121 22 23 24 1 31 32 33 34 131 32 33 34 1

(( 계속계속 ))>> >> A(:, 3:end)=[ ] % A(:, 3:end)=[ ] % 원 소 원 소

삭제삭제A =A =

11 1211 12 21 2221 22 31 3231 32>> >> A(2, 4)A(2, 4) = 50 = 50AA = =

11 12 0 011 12 0 0

21 22 0 5021 22 0 50

31 32 0 031 32 0 0

>> clear; % >> clear; % 모든 변수 삭제모든 변수 삭제>> B(2,3) = 5>> B(2,3) = 5BB = = 0 0 00 0 0 0 0 50 0 5

행 렬 크 기 를 행 렬 크 기 를 벗 어 난 주 소 에 벗 어 난 주 소 에 원소값을 지정하면 원소값을 지정하면 새 원 소 를 새 원 소 를 수 용 하 기 위 해 수 용 하 기 위 해 자 동 으 로 행 렬 이 자 동 으 로 행 렬 이 커 지 고 나 머 지 커 지 고 나 머 지 원 소 는 원 소 는 00 으 로 으 로 채워진다채워진다 ..

Page 30: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 30/53

벡터의 축소벡터의 축소

공벡터공벡터 (empty vector, null vector)(empty vector, null vector) 는 원소가 없으며 는 원소가 없으며 [ ][ ] 로 표시로 표시한다한다 . .

벡터의 일부 원소에 공벡터를 할당하면 해당 원소가 삭제벡터의 일부 원소에 공벡터를 할당하면 해당 원소가 삭제되는 효과를 되는 효과를 갖는다갖는다 . . 이런 방법을 통해 벡터의 크기를 축소시킬 수 있다이런 방법을 통해 벡터의 크기를 축소시킬 수 있다 ..

>> v=[ ] >> v=[ ] % v % v 를 공벡터로 지정를 공벡터로 지정v = [ ]v = [ ]

>> length(>> length(v) v) % % 벡 터 벡 터 vv 의 원 소 의 원 소 개수는개수는 ??

ans = 0ans = 0

>> v=[1 3 >> v=[1 3 100100 5 7 200 300 400]; 5 7 200 300 400];>> v(3)=[ ]>> v(3)=[ ]v =v = 1 3 5 7 1 3 5 7 200 300 400200 300 400

>> v( 5 : end)=[ ] >> v( 5 : end)=[ ]

v =v =1 3 5 71 3 5 7

>> A=>> A=[5  11  4  9; 4  0  26  10;[5  11  4  9; 4  0  26  10;56  1  5  89]56  1  5  89] A = A = 5  5  11  411  4  9  9 4  4  0  260  26  10  10 56  56  1  51  5  89  89

>> A(:, 2:3) = []>> A(:, 2:3) = []A =A = 5 95 9 4 104 10 56 8956 89

Page 31: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 31/53

이 미 이 미 AA 가 가 222 2 행 렬 로 정 의 되 어 행 렬 로 정 의 되 어 있으므로 첫 번째 행의 있으므로 첫 번째 행의 원 소 를 원 소 를 1133 의의 row2row2 로 대 체 하 려 고 로 대 체 하 려 고 하 므 로 크 기 가 하 므 로 크 기 가 다르다는 에러 발생다르다는 에러 발생 . .

행렬 정의시 주의할 점행렬 정의시 주의할 점

스칼라 변수의 값을 정의하는 경우에는 이전에 변수가 미리 스칼라 변수의 값을 정의하는 경우에는 이전에 변수가 미리 정의되어 있었더라도 새로운 값으로 대체가 되므로 문제가 없지정의되어 있었더라도 새로운 값으로 대체가 되므로 문제가 없지만만 , , 배열 변수의 경우에는 다음의 예와 같이 예기치 못한 문제가 배열 변수의 경우에는 다음의 예와 같이 예기치 못한 문제가 생길 수 있으므로 생길 수 있으므로 이미 생성되어 있는 배열변수인지 확인하거나 이미 생성되어 있는 배열변수인지 확인하거나 clear clear 명령을 이용해서 이전의 모든 변수를 삭제하는 것이 좋다명령을 이용해서 이전의 모든 변수를 삭제하는 것이 좋다 ..

>> A=[20, 30; 40, 50]; >> A=[20, 30; 40, 50];

…… ……

>> row1=11:14;>> row1=11:14;

>> A(1, :) =row1>> A(1, :) =row1

Subscripted assignment dimension mismatch.Subscripted assignment dimension mismatch.

>> clear A % >> clear A % 작업공간에 있는 작업공간에 있는 AA 를 삭제한다를 삭제한다 ..

>> A(1, :) =row1>> A(1, :) =row1

A = 11 12 13 14 A = 11 12 13 14

Page 32: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 32/53

배열 편집기배열 편집기 ((Array EditorArray Editor)) (1/2)(1/2)

MATLABMATLAB 의 의 Workspace BrowserWorkspace Browser 를 이용하여 작업공간내의 변수들을 쉽게 다룰 를 이용하여 작업공간내의 변수들을 쉽게 다룰 수 있다수 있다 . Desktop . Desktop 환경에서 환경에서 Workspace BrowserWorkspace Browser 가 보이지 않으면가 보이지 않으면 , , 명령창에서 명령창에서 >> workspace>> workspace 라고 입력하거나 라고 입력하거나 DesktopDesktop 의 의 Workspace Workspace 메뉴메뉴 를 체크하면 된다 를 체크하면 된다 . . Workspace BrowserWorkspace Browser 에서 특정 변수의 이름을 바꾸거나 삭제할 수 있다에서 특정 변수의 이름을 바꾸거나 삭제할 수 있다 ..

변수이름을 더블 클릭하면 변수이름을 더블 클릭하면 Array EditorArray Editor창이 열린다창이 열린다 ..

변수 이름을 바꿀 수도 있다변수 이름을 바꿀 수도 있다 ..

Page 33: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 33/53

배열 편집기배열 편집기 ((Array EditorArray Editor) ) (2/2)(2/2)

Workspace BrowserWorkspace Browser 에서 변수를 더블 클릭에서 변수를 더블 클릭하거나 하거나 메인 메뉴의 메인 메뉴의 Array Array EditorEditor 를 체크하면 를 체크하면 Array Editor Array Editor 창창이 열리며이 열리며 , , 이 창에서 엑셀처럼 이 창에서 엑셀처럼 원소를 추가 입력함으로써 스칼라 변수를 배열로 변환시키거나원소를 추가 입력함으로써 스칼라 변수를 배열로 변환시키거나 , , 배열 배열 변수의 크기를 바꿀 수 있다변수의 크기를 바꿀 수 있다 ..

Page 34: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 34/53

3) 3, (4,3) 2, (4,3) 1, (4,

3) 3, (3,3) 2, (3,3) 1, (3,

3) 3, (2,3) 2, (2,3) 1, (2,

3) 3, (1,3) 2, (1,3) 1, (1,

2) 3, (4,2) 2, (4,2) 1, (4,

2) 3, (3,2) 2, (3,2) 1, (3,

2) 3, (2,2) 2, (2,2) 1, (2,

2) 3, (1,2) 2, (1,2) 1, (1,

1) 3, (4,1) 2, (4,1) 1, (4,

1) 3, (3,1) 2, (3,1) 1, (3,

1) 3, (2,1) 2, (2,1) 1, (2,

1) 3, (1,1) 2, (1,1) 1, (1,

page

column

row

다차원 배열다차원 배열

MATLAB 7MATLAB 7 은 다차원 배열을 지원한다은 다차원 배열을 지원한다 . . 예를 들어예를 들어 , m, mnnqq 의 의 33

차원의 배열을 다룰 수 있다차원의 배열을 다룰 수 있다 . . 33 차원 배열은 각 페이지에 차원 배열은 각 페이지에 m m nn 의 의 22

차원 배열이 있는 것으로 생각할 수 있다차원 배열이 있는 것으로 생각할 수 있다 .. 첫 페이지의 배열은 첫 페이지의 배열은 A(:, :, 1)A(:, :, 1)

로로 , , 둘째 페이지의 배열은 둘째 페이지의 배열은 A(:, :, 2), … A(:, :, 2), … 이런 식으로 모든 페이지의 이런 식으로 모든 페이지의 배열을 볼 수 있다배열을 볼 수 있다 . . 다차원 배열의 생성은 각 페이지별로 다차원 배열의 생성은 각 페이지별로 22 차원 행렬을 차원 행렬을 입력하면 된다입력하면 된다 . .

>> A=[ 5 3 7; 2 9 4; 3 0 6];>> A=[ 5 3 7; 2 9 4; 3 0 6]; >> A(:, :, 2)=[ 4 0 1; 9 2 8; 5 6 4] >> A(:, :, 2)=[ 4 0 1; 9 2 8; 5 6 4] ansansA(:,:,1) =A(:,:,1) = 5 3 75 3 7 2 9 42 9 4 3 0 63 0 6 A(:,:,2) =A(:,:,2) = 4 0 14 0 1 9 2 89 2 8 5 6 45 6 4

Page 35: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 35/53

9756

12829

31174

94128

0621

3715

다차원 배열의 주소 지정다차원 배열의 주소 지정

>> P1=[ 5, 1, 7, -3; -1, 2, 6, 0; 8, 12, -4, 9];>> P2=[ 4, 17, -1, 3; -9, 2, 8, 12; -6, 5, 7, 9];>> A(:, :, 1)=P1; A(:, :, 2)=P2;>> A = cat(3, P1, P2);A(:,:,1) = 5 1 7 -3 -1 2 6 0 8 12 -4 9A(:,:,2) = 4 17 -1 3 -9 2 8 12 -6 5 7 9

>> A(2, 2, 1)ans = 2>> A(1, 2, 2)+A(2,4, 2)ans = 29

Page 36: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 36/53

벡터의 길이와 크기벡터의 길이와 크기 , , 절대값절대값

length(v)length(v) 는 는 벡터 벡터 vv 의 원소의 개수의 원소의 개수를 구해주며를 구해주며 , , 벡터의 크기벡터의 크기 ((길이길이 ))

는 로 는 로 sqrt(v*vsqrt(v*v'' )) 에 의해 구한다에 의해 구한다 . . abs(v)abs(v) 는 는 벡터 벡터 vv 의 의 각 원소의 절대값각 원소의 절대값을 구해준다을 구해준다 . .

예예 ) v=[) v=[xx11, , xx22, , xx33]] 일 때일 때 , length(v)=3, abs(v) = [ |, length(v)=3, abs(v) = [ |xx11|, ||, |xx22|, ||, |xx33| ], v| ], v 의 크기는 의 크기는

sqrt(v*v’)sqrt(v*v’) 로 구한다로 구한다 . .

length(v)length(v) vv 가 벡터인 경우 벡터의 길이가 벡터인 경우 벡터의 길이 (( 원소의 개수원소의 개수 )) 를 돌려준다를 돌려준다 . .

vv 가 가 mmnn 의 행렬인 경우 의 행렬인 경우 mm 과 과 n n 중에서 큰 값을 중에서 큰 값을 돌려준다돌려준다 ..

>> v=[2, -5, 4, -3]; n=length(v)>> v=[2, -5, 4, -3]; n=length(v) ans = 4ans = 4 >> A=[ 11 12 13 14; 21 22 23 24]; length(A)>> A=[ 11 12 13 14; 21 22 23 24]; length(A) ans = 4ans = 4

>> mag = sqrt(v*v’), abs_v= abs(v)>> mag = sqrt(v*v’), abs_v= abs(v) ans = 7.3485ans = 7.3485 abs_v = 2 5 4 3abs_v = 2 5 4 3

Page 37: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 37/53

4241

3231

2221

1211

B

A

4241

3231

2221

1211

4241

3231

2221

1211

42412221

32311211cat(1, A, B)cat(1, A, B)

cat(2, A, B)cat(2, A, B) cat(3, A, B)cat(3, A, B)

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (1/8)(1/8)

cat(dim, A, B, C, …)cat(dim, A, B, C, …) : 지정한 차원 (dim) 에 따라 배열을 연결한다 .dim=1 이면 , 배열들을 밑으로 붙이고 , dim=2 이면 옆으로 붙인다 . dim=3 이면 3 차원 방향으로 붙인다 .cat(1, A, B) 는 [A; B] 와 같고 , cat(2, A, B) 는 [A, B] 와 같다 .

size(A)size(A) 행렬 행렬 AA 의 크기가 의 크기가 mmnn 이면이면 , , 행벡터로 행벡터로 [m, n][m, n] 을 돌려준을 돌려준다다 ..

사용법 사용법 : x=size(A), [m, n]=size(A), size(A, dimension): x=size(A), [m, n]=size(A), size(A, dimension)

>> A=[11:14; 21:24; 31:34]; x=size(A)>> A=[11:14; 21:24; 31:34]; x=size(A) x = 3 4x = 3 4 >> [m, n]=size(A)>> [m, n]=size(A) m = 3m = 3 n = 4n = 4

Page 38: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 38/53

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (2/8)(2/8)

diag(v) diag(v) vv 가 벡터이면가 벡터이면 , v, v 의 원소들을 대각선 원소로 갖는 정방행렬의 원소들을 대각선 원소로 갖는 정방행렬(square matrix)(square matrix) 을 생성한다을 생성한다 ..

diag(A)diag(A) AA 가 행렬이면가 행렬이면 , v, v 의 대각선 원소로 구성된 벡터를 생성한다의 대각선 원소로 구성된 벡터를 생성한다 ..

>> v=[2, 5, 9]; A=diag(v)>> v=[2, 5, 9]; A=diag(v) % 벡터가 대각선 원소인 행렬 생성

A =A = 2 0 02 0 0 0 5 00 5 0 0 0 90 0 9 >> diag(A) >> diag(A) % % 행렬 행렬 AA 의 대각선 원소를 뽑아 벡터로 생성의 대각선 원소를 뽑아 벡터로 생성 ans = 2ans = 2

55 99

sum(v)sum(v) 벡터 벡터 vv 의 모든 원소들의 합을 돌려준다의 모든 원소들의 합을 돌려준다 .. >> v=[5 3 9 2]; sum(v)>> v=[5 3 9 2]; sum(v) ans = 19ans = 19

Page 39: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 39/53

sum(A) sum(A) AA 가 행렬이면가 행렬이면 , A, A 의 각 열의 각 열 (column)(column) 들을 벡터로 취급하여 들을 벡터로 취급하여 합을 합을 구하고 결과를 행벡터로 돌려준다구하고 결과를 행벡터로 돌려준다 ..

>> A=[1:2:5; 11:2:15; 21:2:25]; S=sum(A)>> A=[1:2:5; 11:2:15; 21:2:25]; S=sum(A) A =A =

1 3 51 3 5 11 13 1511 13 15

21 23 2521 23 25 S =S =

33 39 4533 39 45 >> sum(A, 1) >> sum(A, 1) % % 각 열별로 원소를 더한다각 열별로 원소를 더한다 . sum(A). sum(A) 와 와

동일동일 ans = ans =

33 39 4533 39 45 >> sum(A, 2) >> sum(A, 2) % % 각 행각 행 (row)(row) 별로 원소를 더한다별로 원소를 더한다 .. ans = 9ans = 9

3939 6969

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (3/8)(3/8)

Page 40: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 40/53

행렬 A 로부터 열을 따라 3 개 씩 취하 여 새 로 운 크기의 행렬 C 를 만들 때 열의 개수를 미리 계산할 필 요 없 이 [ ] 표 시 를 입 력 하 면 자 동 으 로 계산된다 .

reshape(A, m, n) reshape(A, m, n)

행렬 행렬 AA 로부터 열로부터 열 (column)(column) 을 따라 원소를 취하여 을 따라 원소를 취하여 mmnn 의 행렬을 의 행렬을 새로 만든다새로 만든다 . A. A 의 원소개수 가 의 원소개수 가 mmn n 과 같지 않으면 에러가 과 같지 않으면 에러가 발생한다발생한다 ..

>> A=[1:3:10; 2:3:11; 3:3:12]>> A=[1:3:10; 2:3:11; 3:3:12]A =A =

1 4 7 101 4 7 102 5 8 112 5 8 113 6 9 123 6 9 12

>> B = reshape(A, 2, 6)>> B = reshape(A, 2, 6)ans = ans = 1 3 5 7 9 111 3 5 7 9 11

2 4 6 8 10 122 4 6 8 10 12

>> C = reshape(A, 3, [ ] )>> C = reshape(A, 3, [ ] )C = 1 4 7 10C = 1 4 7 10 2 5 8 112 5 8 11 3 6 9 123 6 9 12

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (4/8)(4/8)

Page 41: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 41/53

max(v)max(v) vv 가 벡터이면가 벡터이면 , v, v 의 원소중에서 가장 큰 값을 돌려준다의 원소중에서 가장 큰 값을 돌려준다 .. min(v)min(v) vv 가 벡터이면가 벡터이면 , v, v 의 원소중에서 가장 작은 값을 돌려준다의 원소중에서 가장 작은 값을 돌려준다 ..

>> v=randperm(5)>> v=randperm(5) v =v =

2 1 3 4 52 1 3 4 5 >> max(v)>> max(v) ans = 5 = 5

max(A)max(A) 행렬 행렬 AA 의 각 열의 각 열 (column)(column) 에서의 최대값을 행벡터로 돌려에서의 최대값을 행벡터로 돌려줌줌 ..

>> A = [6 2; -4 8; 3 10]>> A = [6 2; -4 8; 3 10] A =A =

6 26 2 -4 8-4 8 3 103 10 >> >> max(A)max(A) ans = ans =

6 106 10

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (5/8)(5/8)

Page 42: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 42/53

sort(v)sort(v) 벡터 벡터 vv 의 원소를 크기가 커지는 순으로 정렬하여 돌려준다의 원소를 크기가 커지는 순으로 정렬하여 돌려준다 ..

>> v=randperm(5)>> v=randperm(5) v =v =

5 4 1 2 35 4 1 2 3 >> sort(v)>> sort(v) ans = = 1 2 3 4 51 2 3 4 5

sort(A)sort(A) 행렬 행렬 AA 의 각 열의 각 열 (column)(column) 별로 크기가 커지는 순으로 정렬함별로 크기가 커지는 순으로 정렬함 .. sort(A, ‘descend’)sort(A, ‘descend’) AA 의 각 열별로 크기가 작아지는 순으로 정렬함의 각 열별로 크기가 작아지는 순으로 정렬함 ..

>> A=[3 9 1 5; 8 4 6 7; 5 7 3 4];>> A=[3 9 1 5; 8 4 6 7; 5 7 3 4]; >> sort(A) >> sort(A, ‘descend’)>> sort(A) >> sort(A, ‘descend’) ans = ans =ans = ans = 3 4 1 4 3 4 1 4 88 5 5 9 9 7 7 5 7 3 55 7 3 5 55 7 7 3 3 5 5 8 9 6 78 9 6 7 33 4 4 11 4 4

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (6/8)(6/8)

Page 43: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 43/53

find(v)find(v) 벡터 벡터 vv 의 원소 중에서 의 원소 중에서 00 이 아닌 원소들의 주소를 이 아닌 원소들의 주소를 돌려준다돌려준다 ..

>> x = [ 9 0 4 0 >> x = [ 9 0 4 0 --3 0 2];3 0 2]; >> indx=find(x)>> indx=find(x)

indx =indx = 1 3 5 71 3 5 7

find(find(논리식논리식 )) 논리식을 만족시키는 원소들의 주소를 돌려준다논리식을 만족시키는 원소들의 주소를 돌려준다 ..

>> find(x > 2) >> find(x > 2) ans =ans =

1 31 3 >> >> x = [11 0 33 0 55]'; x = [11 0 33 0 55]'; find(x) find(x) % find % find 결과도 열벡터결과도 열벡터 ans =ans =

11 33 55

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (7/8)(7/8)

Page 44: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 44/53

[r, c, v]=find(A)[r, c, v]=find(A)

행렬 행렬 AA 의 원소중에서 의 원소중에서 00 이 아닌 원소들의 값은 이 아닌 원소들의 값은 vv 에에 , , 주소는 행은 주소는 행은 rr 에에 , , 열은 열은 cc 에 저장한다에 저장한다 ..

>> >> A=[8 0 6; 0 2 4;3 7 0]A=[8 0 6; 0 2 4;3 7 0] A =A =

8 0 68 0 6 0 2 40 2 4 3 7 03 7 0

>> [>> [r, c, v] = find(A); r=r’, c=c’, v= v’r, c, v] = find(A); r=r’, c=c’, v= v’ r =r =

1 3 2 3 1 21 3 2 3 1 2 c =c =

1 1 2 2 3 31 1 2 2 3 3 v =v =

8 3 2 7 6 48 3 2 7 6 4

행렬에 사용되는 내장함수행렬에 사용되는 내장함수 (8/8)(8/8)

Page 45: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 45/53

ones ones 명령어와 명령어와 zeroszeros 명령어를 이용하여 첫 두 행은 명령어를 이용하여 첫 두 행은 00 이고 다음 두 이고 다음 두 행은 행은 11 인 인 4×5 4×5 행렬을 생성하라행렬을 생성하라 ..

예제 예제 2.1 4x52.1 4x5 의 행렬 생성의 행렬 생성

첫 번째 방법첫 번째 방법>> >> A(1:2,:)=zeros(2,5)A(1:2,:)=zeros(2,5)

A = A =

0 0 0 0 00 0 0 0 0

0 0 0 0 00 0 0 0 0

>> A(3:4,:)=ones(2,5)>> A(3:4,:)=ones(2,5)

A = A =

0 0 0 0 00 0 0 0 0

0 0 0 0 00 0 0 0 0

1 1 1 1 11 1 1 1 1

1 1 1 1 11 1 1 1 1

두 번째 방법두 번째 방법>> >> A=[zeros(2,5); ones(2,5)]A=[zeros(2,5); ones(2,5)]

A = A =

0 0 0 0 00 0 0 0 0

0 0 0 0 00 0 0 0 0

1 1 1 1 11 1 1 1 1

1 1 1 1 11 1 1 1 1

Page 46: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 46/53

6×6 6×6 행렬에서 가운데 두 행과 가운데 두 열의 원소가 행렬에서 가운데 두 행과 가운데 두 열의 원소가 11 이고 나머지 이고 나머지 원소는 모두 원소는 모두 00인 행렬을 생성하라인 행렬을 생성하라 ..

예제 예제 2.2 6x62.2 6x6 의 행렬 생성의 행렬 생성

>> AR=zeros(6,6)>> AR=zeros(6,6)AR = AR = 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0>> AR(3:4,:)=ones(2,6)>> AR(3:4,:)=ones(2,6)AR =AR = 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0

>> AR(:,3:4)=ones(6,2)>> AR(:,3:4)=ones(6,2)AR = AR = 0 0 0 0 1 11 1 0 0 0 0 0 0 0 0 1 11 1 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 0 0 0 0 1 11 1 0 0 0 0 0 0 0 0 1 11 1 0 0 0 0

Page 47: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 47/53

명령어 창에서 다음 세 배열 명령어 창에서 다음 세 배열 AA, , BB, , vv 를 만들고를 만들고 , , 명령어 한 개로 명령어 한 개로 AA 의 의 11 번째 번째 행과 행과 33번째 행의 마지막 번째 행의 마지막 44개의 열을 개의 열을 BB 의 첫 두 행의 첫 네 열로 대체하라의 첫 두 행의 첫 네 열로 대체하라 .. 또 또 AA 의 의 44번째 행의 마지막 번째 행의 마지막 44개의 열을 개의 열을 vv 의 의 55~~ 88번째 원소로 대체하라번째 원소로 대체하라 ..

예제 예제 2.3 2.3 행렬의 조작행렬의 조작 (1/2)(1/2)

>> A=[ 2:3:17; 3:3:18; 4:3:19; 5:3:20; 6:3:21 ]>> A=[ 2:3:17; 3:3:18; 4:3:19; 5:3:20; 6:3:21 ]A =A = 2 5 8 11 14 172 5 8 11 14 17 3 6 9 12 15 183 6 9 12 15 18 4 7 10 13 16 194 7 10 13 16 19 5 8 11 14 17 205 8 11 14 17 20 6 9 12 15 18 216 9 12 15 18 21

2 5 8 11 14 17

5 10 15 20 25 303 6 9 12 15 18

30 35 40 45 50 554 7 10 13 16 19

55 60 65 70 75 805 8 11 14 17 20

6 9 12 15 18 21

99 98 97 96 95 94 93 92 91

A B

v

Page 48: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 48/53

>> B=[5:5:30; 30:5:55; 55:5:80 ]>> B=[5:5:30; 30:5:55; 55:5:80 ]

BB ==

5 10 15 20 25 305 10 15 20 25 30

30 35 40 45 50 5530 35 40 45 50 55

55 60 65 70 75 8055 60 65 70 75 80

>> v=[99:-1:91]>> v=[99:-1:91]

v = v =

99 98 97 96 95 94 93 92 9199 98 97 96 95 94 93 92 91

>> A([1 3 4 5], 3:6)=[ B([1 2], 1:4; v(5:8); B(3,2:5)]>> A([1 3 4 5], 3:6)=[ B([1 2], 1:4; v(5:8); B(3,2:5)]

A = A =

2 5 5 10 15 202 5 5 10 15 20

3 6 9 12 15 183 6 9 12 15 18

4 7 30 35 40 454 7 30 35 40 45

5 8 95 94 93 925 8 95 94 93 92

6 9 60 65 70 756 9 60 65 70 75

>>>>

예제 예제 2.3 2.3 행렬의 조작행렬의 조작 (2/2)(2/2)

Page 49: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 49/53

문자열은 문자열은 따옴표로 묶은 문자들의 배열따옴표로 묶은 문자들의 배열로서로서 , , 글자글자 , , 숫자숫자 , , 기호와 공백 기호와 공백 등을 포함할 수 있다등을 포함할 수 있다 . . 예예 ) ) ''classclass'', , ''te stte st'', , ''math%1math%1'', , ''{mech:05!}{mech:05!}''

작은따옴표를 문자열에 포함시키려면작은따옴표를 문자열에 포함시키려면 , , 작은따옴표를 두 번 연달아 작은따옴표를 두 번 연달아 표시표시한다한다 . . 예예 ) ) ''Mr. HwangMr. Hwang''''s offices office''

문자열을 입력을 위해 작은따옴표를 처음 표시하면 글자 색이 문자열을 입력을 위해 작은따옴표를 처음 표시하면 글자 색이 적갈색적갈색(maroon)(maroon) 으로 변하며으로 변하며 , , 마지막으로 작은따옴표를 입력하면 글자 색이 마지막으로 작은따옴표를 입력하면 글자 색이 모두 모두 자주색자주색으로 변한다으로 변한다 ..

문자열을 변수에 저장하면 문자열을 변수에 저장하면 각 글자에 해당하는 각 글자에 해당하는 22 바이트 코드가 숫자 바이트 코드가 숫자 배열처럼 저장배열처럼 저장되므로되므로 , , 한 줄로 된 문자열은 글자한 줄로 된 문자열은 글자 (( 공백도 포함공백도 포함 ) ) 개수와 개수와 같은 원소 개수를 가진 행벡터처럼 취급된다같은 원소 개수를 가진 행벡터처럼 취급된다 ..

MATLABMATLAB 에서 문자열의 용도 예 에서 문자열의 용도 예 :: 출력명령어출력명령어 (4(4 장장 )) 에서 텍스트 메시지를 표시할 때 에서 텍스트 메시지를 표시할 때 , plot , plot 명령어에서 명령어에서

출력할 그래프의 형식을 지정할 때출력할 그래프의 형식을 지정할 때 (5(5 장장 ), ), 함수의 입력인자함수의 입력인자 (6(6 장장 )) 에에 .. 그래프의 형식을 지정그래프의 형식을 지정 (( 축의 라벨축의 라벨 , , 제목제목 , , 설명문설명문 )) 할 때할 때 , , 문자열 내의 문자열 내의

문자들이 특정 폰트와 크기문자들이 특정 폰트와 크기 , , 위치위치 , , 색을 갖도록 형식 지정을 할 수 있다색을 갖도록 형식 지정을 할 수 있다 ..

문자열문자열 (String)(String)

Page 50: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 50/53

문자열은 문자열의 글자 개수와 같은 개수의 원소를 갖는 행벡터이며문자열은 문자열의 글자 개수와 같은 개수의 원소를 갖는 행벡터이며 ,, 벡터의 주소 지정을 이용하여 각 원소에 접근할 수 있다벡터의 주소 지정을 이용하여 각 원소에 접근할 수 있다 ..

>> str=>> str=''MATLAB is a high-performance language.MATLAB is a high-performance language.‘ ‘

str = str = MATLAB is a high-performance language.MATLAB is a high-performance language.

>> size(str) >> size(str) % str% str 은 공백을 포함하여 모두 은 공백을 포함하여 모두 3838 개의 글자를 가진 문자열임 개의 글자를 가진 문자열임 ans = 1 38ans = 1 38

>> name = str(1:6) >> name = str(1:6) % % 수치 벡터처럼 다룰 수 있다수치 벡터처럼 다룰 수 있다 ..

name = MATLABname = MATLAB

>> >> str(1:6)= str(1:6)= '' C++C++''

??? In an assignment A(:) = B, the number of elements in A and B??? In an assignment A(:) = B, the number of elements in A and B

must be the same.must be the same.

>> str(4:6)=[ ]; str(1:3)='C++'>> str(4:6)=[ ]; str(1:3)='C++'

str =str =

C++ is a high-performance language.C++ is a high-performance language.

문자열 변수문자열 변수 (1/3)(1/3)

Page 51: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 51/53

>> str>> strstr =str =C++ is a high-performance language.C++ is a high-performance language.

>> str(1:3)=‘MAT’>> str(1:3)=‘MAT’str =str =MAT is a high-performance language.MAT is a high-performance language.

>> str=[str(1:3), 'LAB ', str(4:end)]>> str=[str(1:3), 'LAB ', str(4:end)]

str =str =

MATLAB is a high-performance language.MATLAB is a high-performance language.

>> whos>> whos

Name Name Size Bytes Size Bytes Class Class AttributesAttributesstrstr 1x38 76 1x38 76 char char

>> str(end:>> str(end:--1:30)1:30)ansans = .egaugnal = .egaugnal % language.% language. 의 역순의 역순

문자열 변수문자열 변수 (2/3)(2/3)

Page 52: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 52/53

문자열도 행렬처럼 여러 행을 가질 수 있다문자열도 행렬처럼 여러 행을 가질 수 있다 . . 단단 , , 각 행의 길이는 모두 각 행의 길이는 모두 같아야 하므로 글자 수가 다른 경우 공백을 넣어 같도록 해야 한다같아야 하므로 글자 수가 다른 경우 공백을 넣어 같도록 해야 한다 ..

>> >> SS = [‘My’; ‘name’; ‘is Jina.’]= [‘My’; ‘name’; ‘is Jina.’] ??? Error using ==> vertcat??? Error using ==> vertcat All rows in the bracketed expression must have the same All rows in the bracketed expression must have the same numbernumber

of columns.of columns. >> length(S(3, :))>> length(S(3, :)) ans = 8ans = 8 >> S = ['My '; 'name '; 'is Jina.'] >> S = ['My '; 'name '; 'is Jina.'] % % 공백으로 행의 길이 맞춤공백으로 행의 길이 맞춤 S = My S = My

name name is Jina.is Jina.

>> char(‘My’, ‘name’, ‘is Jina.’) >> char(‘My’, ‘name’, ‘is Jina.’) % char% char 가 자동으로 행의 길이 맞춤가 자동으로 행의 길이 맞춤 S = My S = My

name name is Jina.is Jina.

문자열 변수문자열 변수 (3/3)(3/3)

Page 53: MATLAB 개요와 응용 2 장 배열 생성

MATLAB HCH

2 장 배열과 행렬 53/53

22 장 강의록 끝장 강의록 끝

2 장 끝