매트랩에서 두 행렬을 성분별로 연산하는 방법

매트랩에서 두 행렬을 성분별로 연산하는 방법

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

1.png

나눗셈

  • 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

2.png

거듭제곱

  • 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

3.png

댓글