매트랩이 공학용 언어로써 자리매김을 꾸준히 해나가는 아주 큰 이유중에 하나가 다들 알다시피... 행렬의 연산처리가 아주쉽게 가능하다는 것이다.
여기에서는 행렬의 연산 방법중 잘 사용하진 않으나 수치해석, 특히 DSP를 하는 사람에게서 가장 유요할 것 같은 행렬연사에 대하여 두가지 소개 하고자 한다.
1. magic & 행과열의 재배치
magic square matrix(마방진행렬): 마방진은 가로.세로 .대각선으로 수의 합이 모두 같은 숫자 배열표이다. n차의 마방진은 1 에서 n^2사이에 있는 정수로 구성되는 n by b 의 행렬이다. 가로.세로.대각선으로의 수의 합이 모두 같으므로 각 행들의 합과 각 열들의 합은 서로 같다.
>>A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
위와 같은 마방진 행렬이 나온다.
그럼 이러한 행렬을 아래와 같이 표현한다면 어떻게 될까?
>>B=A(:,[1 3 2 4])
B =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
즉, " 행렬 A의 각각의 행들에 대한 열들을 1, 3, 2, 4로 재배치하라는 뜻이다."
>>B=A([1 3 2 4],:)
B =
16 2 3 13
9 7 6 12
5 11 10 8
4 14 15 1
즉, " 행렬 A의 각각의 열들에 대한 핼들을 1, 3, 2, 4로 재배치하라는 뜻이다."
2. prod 함수
이 함수는 "원소들간의 곱을 반환"한다.
prod함수의 예를 설명하시 이전에 prod함수의 매트랩 설명을 참조 하기로 하자.
>>help prod
PROD Product of elements.
For vectors, PROD(X) is the product of the elements of X. For
matrices, PROD(X) is a row vector with the product over each
column. For N-D arrays, PROD(X) operates on the first
non-singleton dimension.
PROD(X,DIM) works along the dimension DIM.
Example: If X = [0 1 2;3 4 5]
then prod(X,1) is [0 4 10] and prod(X,2) is [0 60]
See also SUM, CUMPROD, DIFF.
Overloaded methods
help sym/prod.m
라고 나와 있다. 여기에서 우리가 주의 해야할 점이 PROD(X,DIM)에서
"DIM "이다.
일반적으로, 베이직, 포트란, c/c++, VB 등을 공부해 본 사람을 다들 알것이다. 이들 프로그램의 특징은 변수를 잘 지정 해야 한다는 것이다. 이들 프로그램에서 공통적으로 변수를 지정하는 명령어가 'DIM'이다.
매트랩이 공학언어로서 각광을 받고 있는 부분 중의 또 하나가 변수 지정이다. 변수지정이 상당히 편리하여 코딩이 간편하다는 것이다.
허나 매트랩에서 'DIM'문을 사용하지 않느냐?
그것은 아니다.. 일반적으로 DSP ToolBox를 이용하는 분은 'DIM'을 사용하는 경우가 종종 있다고 한다. 물론 난 DSP 전공을 하지 않지만. 수치해석을 하면서 이러한 경우를 겪었고. 이 부분의 이해를 수박 겉핡기 식으로 넘어갔다가 상당한 곤욕을 치른 경우가 있어 이렇게 소개를 한다.
**<매트랩에서 DIM>**
"DIM"이라고 하여 차원을 입력하게 하는 것이 있다. 이때, "DIM=1"인 경우는 열 벡터를 의미하고, "DIM=2"인 경우 행 벡터를 의미한다.
따라서, 도움말의 PROD함수의 예제 있는 PROD(X,1),PROD(X,2)의 뜻이 명확히 전달 되었으리라 생각한다.
여기서, 우리가 주의해서 봐야 할 점이 한가지 더 있다.
DIM=1:열, DIM=2행이라고 했다. 즉. 매트랩은 행보다는 열을 우선순위로 연산한다는 것이다.
이에대한 예는 매트랩 행렬조작에서 잘 나타난다.
**내재함수 reshape**
>>A=[1 2;3 4;5 6];
A=
1 2
3 4
5 6
>>reshape(A,2,3)
ans=
1 5 4
3 2 6
>>reshape(A,1,6)
ans=
1 3 5 2 4 6
reshape 함수에서 보듯이 매트랩은 열을 기준으로 연산한다. 즉, DIM=1
이 자동적으로 수행된다는 뜻이다.