매트랩에서 두 행렬을 성분별로 연산하는 방법
곱셈
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} $$
$$ \implies \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_{1}b_{1} & a_2b_{1} & a_{3}b_{1} \\ a_{1}b_2 & a_2b_2 & a_{3} b_2 \\ a_{1}b_{3} & a_2 b_{3} & a_{3} b_{3} \\ a_{1}b_{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