mtimes, *
행렬 곱셈
설명
는 C = A*BA와 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