Main Content

mtimes, *

설명

예제

C = A*BAB의 행렬 곱입니다. A가 m×p 행렬이고 B가 p×n 행렬인 경우, C는 다음으로 정의된 m×n 행렬입니다.

C(i,j)=k=1pA(i,k)B(k,j).

이 정의에 따라 C(i,j)Ai번째 행과 Bj번째 열의 내적이 됩니다. 이 정의는 MATLAB® 콜론 연산자를 사용하여 다음과 같이 쓸 수 있습니다.

C(i,j) = A(i,:)*B(:,j)
비 스칼라 AB의 경우, A의 열 개수는 B의 행 개수와 같아야 합니다. 비 스칼라 입력값에 대한 행렬 곱셈은 일반적으로 가환성(Commutative)이 없습니다. 즉, A*B는 일반적으로 B*A와 같지 않습니다. 최소 하나의 입력값이 스칼라인 경우 A*BA.*B와 동일하고 가환성이 성립됩니다.

C = mtimes(A,B)A*B를 실행하는 또 다른 방법이지만 거의 사용되지 않습니다. 이 표현식은 클래스에 대한 연산자 오버로드를 지원합니다.

예제

모두 축소

1×4 행 벡터 A와 4×1 열 벡터 B를 만듭니다.

A = [1 1 0 0];
B = [1; 2; 3; 4];

AB를 곱합니다.

C = A*B
C = 3

그러면 그 결과로 1×1 스칼라를 얻게 되며, 이를 벡터 AB내적이라고도 합니다. 또는 구문 dot(A,B)를 사용하여 내적 AB를 계산할 수 있습니다.

BA를 곱합니다.

C = B*A
C = 4×4

     1     1     0     0
     2     2     0     0
     3     3     0     0
     4     4     0     0

그러면 그 결과로 4×4 행렬을 얻게 되며, 이를 벡터 AB외적이라고도 합니다. 두 벡터의 외적 AB는 행렬을 반환합니다.

두 개의 배열 AB를 만듭니다.

A = [1 3 5; 2 4 7];
B = [-5 8 11; 3 9 21; 4 0 8];

AB의 곱을 계산합니다.

C = A*B
C = 2×3

    24    35   114
    30    52   162

A의 두 번째 행과 B의 세 번째 열의 내적을 계산합니다.

A(2,:)*B(:,3)
ans = 162

이 답은 C(2,3)과 동일합니다.

입력 인수

모두 축소

피연산자로, 스칼라, 벡터 또는 행렬로 지정됩니다.

  • 최소 하나의 입력값이 스칼라인 경우 A*BA.*B와 동일합니다. 이 경우, 비 스칼라 배열은 임의의 크기일 수 있습니다.

  • 비 스칼라 입력값의 경우, ABA의 열 개수가 B의 행 개수와 같은 2차원 배열이어야 합니다.

  • AB 중 하나가 정수 클래스(int16, uint8, ...)인 경우 다른 입력값은 스칼라여야 합니다. 정수 데이터형을 가진 피연산자는 복소수일 수 없습니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | duration | calendarDuration
복소수 지원 여부:

출력 인수

모두 축소

곱으로, 스칼라, 벡터 또는 행렬로 반환됩니다. 배열 C는 입력값 A와 동일한 개수의 행을 가지고 입력값 B와 동일한 개수의 열을 가집니다. 예를 들어, A가 m×0 빈 행렬이고 B가 0×n 빈 행렬인 경우 A*B는 0으로 구성된 m×n 행렬이 됩니다.

  • 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.

확장 기능

HDL 코드 생성
HDL Coder™를 사용하여 FPGA 및 ASIC 설계를 위한 VHDL, Verilog 및 SystemVerilog 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장