MATLAB에서 벡터의 원소를 참조하거나 벡터의 원하는 위치에 값을 설정하려고 할때는 아래와 같이 한다.
>> b = a(k)>> a(k) = b |
위에서 첫 번째 명령은 a벡터의 k번째 요소를 변수b에 저장하라는 것이고 두 번째 명령은 b변수값을 a벡터의 k번째 자리에 저장하라는 것이다. 여기서 a벡터는 행벡터이든 열벡터이든 동일하게 적용된다. 아래의 예를 보자
>> a=[8:-2:2]’a =8642>> b=a(3)b =4>> a(2)=0a =8042 |
행렬의 한 원소에 접근하여 원하는 위치에 값을 읽어오거나 바꿀려고 할 때는 아래와 같이 괄호 안에 행 수와 열 수를 콤마(,)로 구별하여 지정한다.
>> B = A(k1,k2)>> A(k1,k2) = B |
즉, 행렬 A의 k1행 k2열 원소를 참조하고자 할 때 A(k1,k2)로 입력한다.
>> A = [ 1 2 3; 4 5 6; 7 8 9 ]A =1 2 34 5 67 8 9>> A(1,2) % 1행 2열 원소2>> A(1,3) % 1행 3열 원소3>> A(3,3) % 3행 3열 원소9 |
만약 어떤 행이나 어떤 열의 모든 원소를 선택하고자 하면, 선택하고자 하는 해당 열이나 행을 지정할 때 콜론(:)을 단독으로 사용한다. 행렬의 지정자로 콜론(:)이 단독으로 쓰이면 ‘전부(all)’라는 의미를 갖는다. 다음 예를 보자.
>> A(1,:) % 1행의 모든 원소1 2 3>> A(:,3) % 3열의 모든 원소ans =369 |
여기서 A(1,:)는 ‘1행, 전체’를 가리키고 A(:,3)은 ‘3열,전체’를 가리킨다.
행이나 열의 특정한 부분만 선택하고자 하면 선택하고자 하는 해당 열이나 행를 벡터로 지정해주면 된다. 예를 들어
>> A([1 3], :) %1행과 3행만 선택1 2 37 8 9>> A(:, [2 3]) %2열과 3열만 선텍2 35 68 9>> A([1 3], [2 3])2 38 9 |
위에서 마지막 예제의 결과는 다음 그림을 보면 쉽게 이해할 수 있다.
[그림 1] 선이 겹치는 부분이 선택된다.
A행렬에서 지정한 행과 열이 겹치는 곳에 위치한 요소만 선택이 되어진다는 것을 [그림 1]을 보면 쉽게 이해할 수 있다. 즉 [그림 1]에서 1행과 3행에 가로선을 그리고 2열과 3열에 가로선을 그어보면 선들이 겹치는 부분만 선택되는 것이다.
A([1 3], :) 명령어를 읽을 때 ‘A행렬의 1행 전체, 3행 전체’라고 읽으면 정확하고 결과값도 1행 밑에 3행이 위치한다. 그런데 다음 예제롤 하나 더 보고 넘어가자.
>> A([3 1], :) %3행과 1행만 선택7 8 91 2 3>> A(:, [3 2]) %3열과 2열만 선텍3 26 57 8 |
A([3 1], :)명령어와 그 결과를 보면 ‘3행 먼저, 그 다음 1행’순으로 인덱스 벡터에 써준 순서대로 요소를 뽑아낸다는 것을 알 수 있다. A(:, [3 2])도 마찬가지로 ‘3열 먼저. 그 옆에 2열’이라는 것을 알 수 있다.
'프로그래밍언어.Lib > MATLAB' 카테고리의 다른 글
MATLAB 의 행렬의 인덱싱 방법 (part 3) (0) | 2015.06.24 |
---|---|
MATLAB 의 행렬의 인덱싱 방법 (part 2) (0) | 2015.06.24 |
MATLAB 의 행렬 기본 입력 (part 4) : 벡터와 콜론(:) 연산자 (0) | 2015.06.24 |
MATLAB 행렬 기본 입력 (part 3) : 복소 행렬 (0) | 2015.06.24 |
MATLAB 행렬 기본 입력 (part 2) : 함수 행렬과 전치 행렬 (0) | 2015.06.24 |