이번 포스팅에서는 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차원이나 그 이상의 매트릭스에 대해서도 적용 가능하다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB Bisection method(이분법) (1262) | 2011.04.03 |
---|---|
MATLAB rot90(), triu(), transpose, hermitian transpose, upper(), lower() (0) | 2011.04.03 |
MATLAB diff(), sortrows(), (0) | 2011.04.03 |
MATLAB .* ./ .^ 연산 (0) | 2011.04.01 |
MATLAB shortcut, 단축키 설정 (0) | 2011.04.01 |
MATLAB 최대공약수 gcd(), 최소공배수lcm() (0) | 2011.03.30 |
MATLAB 소수 관련 함수 primes(), isprime() (0) | 2011.03.30 |
MATLAB diag(), eye(), zeros(), ones() (2) | 2011.03.27 |
댓글