본문 바로가기
programming language/MATLAB

MATLAB index

by 남성 2011. 4. 1.

이번 포스팅에서는 MATLAB 인덱스에 대해 설명한다.

 

다음 matrix A 에 대한 각 인덱스의 접근 방법에 대해 알아보자.

 



 

: (콜론) 의 사용법에 대해 알아보자.

 

: 은 a:b 와 같은 형태로 쓰이면 a~ b 까지라는 뜻이다. 인덱스에 접근하는 용도로 : 을 쓸 때 a,b 값은 1보다 큰 양의 정수 여야 한다.

 

: 을 이용하여 A 의 3행 1열부터 4열 까지의 값을 B 라는변수에 입력해 보자.

 

 

행, 열을 구분하지 않고 다음과 같이 접근할 수도 있다.

 

 

 

MATLAB 은 기본적으로 행 벡터 즉 열을 기준으로 연산을 하는 특징이 있다.

 

A 의 5행 모든 열을 D 라는 변수에 입력해 보자.

 

 

 

콜론을 이용하여 인덱스에 접근을 할 때 콜론만 단독으로 쓰일때는 '모든 것' 을 의미 한다.

 

 

다음으로 인덱스 접근시의 end 의 용법에 대해 알아본다. end 는 말 그대로 마지막 인덱스를 나타낸다.

 

위에서 설명한 A 의 5행 모든 열은 다음과 같이 나타내도 된다.

 

 

A 의 값 중에서 20보다 큰 인자의 인덱스를 찾아 보자. 이런 경우 조건문과 find() 함수를 이용하여 인덱스를 찾곤 한다. find() 함수는 괄호 안의 조건이 참인 인덱스를 찾아주는 것이다.

 

 

 

위 결과는 A matrix 를 벡터로 나타냈을 때의 인덱스 값이다.

 

행과 열로 구분해서 나타내려면 다음과 같이 써주면 된다.

 

 

 

위 결과를 보면 r 에는 행 인덱스c 에는 열 인덱스가 들어감을 확인 할 수 있다.

 

위 결과를 보면 A>20 을 만족하는 부분이 5 군데 있음을 확인 할 수 있다.

 

A>20 을 만족 시키는 처음 2개의 인덱스만 찾고 싶을 때는 다음과 같이 한다.

 

 

다음과 같이 'first' 를 안 써줘도 동일한 결과를 얻을 수 있다.

 

 

 

즉 'first' 값이 default 라는 것을 알 수 있다.

 

 

그럼 마지막 2개 인덱스만 찾고 싶을때는? first 만 last 로 바꿔주면 된다.

 

 

 

다음으로 linear 인덱스subscripts 와의 변환에 대해 살펴 본다.

 

A matrix 는 5행 5열 matrix 이므로 다음과 같은 인덱스를 갖는다.

 

표 1, linear index

1

6

11

16

21

2

7

12

17

22

3

8

13

18

23

4

9

14

19

24

5

10

15

20

25

 

subscripts 로는 다음과 같다.

표 2, subscripts index

(1,1)

(1,2)

(1,3)

(1,4)

(1,5)

(2,1)

(2,2)

(2,3)

(2,4)

(2,5)

(3,1)

(3,2)

(3,3)

(3,4)

(3,5)

(4,1)

(4,2)

(4,3)

(4,4)

(4,5)

(5,1)

(5,2)

(5,3)

(5,4)

(5,5)

 

 

linear index 와 subscripts 사이의 변환을 해주는 함수로 ind2sub(), sub2ind() 함수가 있다.

 

ind2sub() 함수는 index 를 subscripts 로 만들어 주는 함수이다.

 

ind2sub() 를 이용하여 linear index로 19 를 subscripts 로 나타내 보자.

 

 

위와 같이 4행 4열이 출력됨을 알 수 있다.

 

sub2ind() 함수는 subscripts 를 index 로 만들어주는 함수이다.

 

3행 5열이 linear index 로 몇 번째 인지를 알아 보자.

 

 

오늘은 MATLAB 에서의 index 에 대해 알아 봤다.

 

위에서 설명한 함수들이나 인덱스 접근 방식들은 2차원 매트릭스 뿐 만이 아니라 3차원이나 그 이상의 매트릭스에 대해서도 적용 가능하다.

 


댓글0