mtimes, *
행렬 곱셈
설명
는 C
= A
*B
A
와 B
의 행렬 곱입니다. A
가 m×p 행렬이고 B
가 p×n 행렬인 경우, C
는 다음으로 정의된 m×n 행렬입니다.
이 정의에 따라 C(i,j)
는 A
의 i
번째 행과 B
의 j
번째 열의 내적이 됩니다. 이 정의는 MATLAB® 콜론 연산자를 사용하여 다음과 같이 쓸 수 있습니다.
C(i,j) = A(i,:)*B(:,j)
A
와 B
의 경우, A
의 열 개수는 B
의 행 개수와 같아야 합니다. 비 스칼라 입력값에 대한 행렬 곱셈은 일반적으로 가환성(Commutative)이 없습니다. 즉, A*B
는 일반적으로 B*A
와 같지 않습니다. 최소 하나의 입력값이 스칼라인 경우 A*B
는 A.*B
와 동일하고 가환성이 성립됩니다.예제
입력 인수
출력 인수
팁
A*B*C
와 같이 연쇄적인 행렬 곱셈에서는 괄호를 사용해 연산 순서를 지정함으로써 실행 시간을 단축할 수도 있습니다.A*B*C
로 세 행렬을 곱하는 경우를 생각해 보겠습니다. 여기서A
는 500×2,B
는 2×500,C
는 500×2입니다.괄호가 없으면 왼쪽에서 오른쪽으로의 연산 순서를 따르므로,
A*B
가 먼저 계산되어 500×500 행렬이 형성됩니다. 그런 다음, 이 행렬에C
를 곱해 500×2의 결과 행렬을 얻습니다.대신에
A*(B*C)
로 지정하면B*C
가 먼저 곱해져 2×2 행렬이 생성됩니다. 그런 다음, 이 작은 행렬에A
를 곱해 위와 똑같은 500×2의 결과 행렬을 얻게 되지만, 이 경우에는 연산 횟수와 중간 과정에서의 메모리 사용량이 줄어듭니다.
참고 문헌
[1] “BLAS (Basic Linear Algebra Subprograms).” Accessed July 18, 2022. https://netlib.org/blas/.
[2] Davis, Timothy A. “Algorithm 1000: SuiteSparse:GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra.” ACM Transactions on Mathematical Software 45, no. 4 (December 31, 2019): 1–25. https://doi.org/10.1145/3322125.
확장 기능
버전 내역
R2006a 이전에 개발됨참고 항목
colon
| times
| dot
| cross
| pagemtimes
| tensorprod