본문 바로가기
programming language/MATLAB

MATLAB 기본 2

by __observer__ 2011. 3. 19.
반응형

MATLAB 에서 매트릭스의 인덱스에 대한 처리는 정말 기본 중에 기본이라 할 수 있다. 이번 포스팅에서는 매트릭스 인덱스 처리에 대해 설명한다.

 

1부터 10까지의 정수로 구성된 벡터 X를 발생시켜 보자.

 

  • 콜론 연산자 이용

X=1:10

X =

1 2 3 4 5 6 7 8 9 10

  • linspace() 함수 이용

X=linspace(1,10,10)

X =

1 2 3 4 5 6 7 8 9 10

 

  • 무식하게 다 써주기

X=[1 2 3 4 5 6 7 8 9 10]

X =

1 2 3 4 5 6 7 8 9 10

 

위 세가지 방법 모두 동일한 결과를 나타낸다. linspace(1, 10, 10) 함수의 첫 번째 1 은 시작 값 , 두 번째 10은 마지막값, 그리고 세번째 10 은 전체 개수를 의미 한다.

 

그럼 X 라는 벡터에서 인덱스를 이용하여 각 인자 또는 벡터를 만들어 보자. MATLAB 의 인덱스는 C/C++ 와는 다르게 1 부터 시작한다는데 주의 해야 한다.

 

인덱스 10 , 2 , 5 번째 값을 추려 보자 .

X([10 2 5])

ans =

10 2 5

 

위 코드와 같이 X라는 변수의 인덱스에 접근을 할 때는 괄호 ( ) 를 하고 그 안에 인덱스 값들을 써 주면 된다. 한 개의 인덱스에 접근 하는 경우에는 X(5) 이런 식으로 한 값만 써주면 되지만 여러 인덱스에 접근하는 경우에는 [ ] 을 써서 벡터 또는 매트릭스의 형태로 써 줘야 한다.

 

다음으로 X 의 값 중에 5 보다 큰 값들만 뽑아 보자.

 

  • logical index 를 이용하는 방법

logical_index=X>5

logical_index =

0 0 0 0 0 1 1 1 1 1

 

class(logical_index)

ans =

logical

 

X(logical_index)

ans =

6 7 8 9 10

 

  • index 를 이용하는 방법

index=find(X>5)

index =

6 7 8 9 10

 

X(index)

ans =

6 7 8 9 10

 

MATLAB에서는 위와 같이 두 가지 방식으로 인덱스에 접근 할 수 있다. 1 부분과 같이 logical 값을 이용하는 방법도 있다는 것을 알아두기 바란다. logical index 를 이용할 때는 코드가 더 간단해 지며, 보통은 아래와 같이 쓰는 게 일반 적이다.

X(X>5)

 

ans =

6 7 8 9 10

 

이제 매트릭스의 인덱스에 대해 살펴 보자.

 

X=magic(3)

 

X =

8 1 6

3 5 7

4 9 2

 

위 X 의 3, 2 , 5 번째 값들을 추려 보자.

 

X([3 2 5])

 

ans =

4 3 5

 

매트릭스는 항상 열을 기준으로 인덱싱을 한다는 것을 알아야 한다.

 

따라서 X 의 3, 2, 5 번째 값을 인데싱 할 때는 매트릭스 X 를 다음과 같이 열을 기준으로 나열해 보면 인덱스를 정확히 알 수 있을 것이다.

 

X(:)

 

ans =

8

3

4

1

5

9

6

7

2

 

위 결과를 보면 첫 번째 열 다음에 두 번째 열, 세 번째 열 이렇게 나열하는 것을 확인 할 수 있다.

 

그리고 위 결과에서 3번째 2번째 5번째 값을 뽑으면 4, 3, 5 라는 값이 출력된다.

 

 

이제 행 과 열에 따른 인덱싱을 알아 보자.

 

위의 X 매트릭스에 대하여 [1,3] 행 2 열 의 값들을 추려 보자.

 

X([1 3], 2)

 

ans =

1

9

 

위와 같이 매트릭스의 행과 열 인덱스를 통해 간단하게 인자 값들에 접근 할 수 있다.


반응형

댓글