logo

매트랩에서 두 행렬을 성분별로 연산하는 방법 📂프로그래밍

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

곱셈

  • 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

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