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
위와 같이 매트릭스의 행과 열 인덱스를 통해 간단하게 인자 값들에 접근 할 수 있다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB erf, erfc, Q- function (2) | 2011.03.19 |
---|---|
MATLAB BPSK BER simulation in AWGN channel (77) | 2011.03.19 |
MATLAB 반올림 관련 함수들 round, fix, ceil, floor (4) | 2011.03.19 |
MATLAB interpolation, interp1() (0) | 2011.03.19 |
MATLAB subplot() (0) | 2011.03.16 |
MATLAB 입력 신호의 delay 확인 xcorr(), finddelay() (0) | 2011.03.14 |
MATLAB 벡터화 기법 (0) | 2011.03.14 |
MATLAB 적분 추가 내용 trapz() (0) | 2011.03.14 |
댓글