매트랩에서 두 행렬을 성분별로 연산하는 방법
elementwise operation of matrix in matlab
곱셈
times()
,.*
: 두 행렬의 각 성분을 곱해서 그 결과를 반환한다.
두 행렬의 크기가 완전히 같거나, 한 쪽이 스칼라이거나, 행의 크기가 같은 행벡터, 열의 크기가 같은 열벡터일 경우에만 연산이 가능하다. 크기가 다른 경우에 작은 행렬이 큰 행렬과 같은 크기의 행렬인 것 처럼 계산되는데 이 때 빈 자리는 똑같은 값으로 채워진다. 예를 들어 스칼라는 모든 성분이 같은 값을 가지게 되고, 행벡터의 경우 모든 행이 같은 행렬이 된다. 잘 이해가 안된다면 아래의 식을 참고하자. .*
는 점과 곱셈 기호가 합쳐졌으니 점별 곱셈 이라고 이해하면 된다. 다른 성분별 연산의 기호도 이런식으로 만들어져있다.
$$ A=\begin{pmatrix} a_1 & a_2 & a_3 \end{pmatrix},\quad B=\begin{pmatrix} b_1 \\ b_2 \\ b_3 \\ b_4 \end{pmatrix} \quad \implies \quad \begin{align*} A.B&=\begin{pmatrix} a_1 & a_2 & a_3 \\ a_1 & a_2 & a_3 \\ a_1 & a_2 & a_3 \\ a_1 & a_2 & a_3 \end{pmatrix} \begin{pmatrix} b_1 & b_1 & b_1 \\ b_2 & b_2 & b_2 \\ b_3 & b_3 & b_3 \\ b_4 & b_4 & b_4 \end{pmatrix} \\ &= \begin{pmatrix} a_1b_1 & a_2b_1 & a_3b_1 \\ a_1b_2 & a_2b_2 & a_3 b_2 \\ a_1b_3 & a_2 b_3 & a_3 b_3 \\ a_1b_4 & a_2 b_4 & a_3 b_4 \end{pmatrix} \end{align} $$
예제 코드와 출력 결과는 아래와 같다.
A=[2 1 -3; 4 0 3]
B=[1 2 3]
C=[3; 1]
a=A.*B
b=A.*C
c=B.*C
d=3.*A
나눗셈
rdivide()
,./
: 두 행렬의 각 성분을 나눠서 그 결과를 반환한다.
행렬의 크기에 대한 내용은 .*
과 같다. 이를 이용하면 성분이 역수인 행렬을 쉽게 구할 수 있다. 행렬 A의 각 성분의 역수를 성분으로 가지는 행렬은 1./A
로 구할 수 있다.예제 코드와 출력 결과는 아래와 같다.
A=[2 1 -3; 4 0 3]
B=[1 2 3]
C=[3; 1]
a=rdivide(A,B)
b=A./C
c=B./C
d=1./A
거듭제곱
power()
,./
:A.^B
인 경우 A의 각 성분을 밑, B의 각 성분을 지수로 두고 계산한 결과를 반환한다.
예제 코드와 출력 결과는 아래와 같다.
A=[2 1 -3; 4 0 3]
B=[1 2 3]
C=[3; 1]
a=power(A,B)
b=A.^C
c=B.^C
d=3.^A