MatMul
행렬과 벡터의 곱셈을 가능하게 하는 MatMul 메서드에는 몇 가지 오버로드가 있습니다.
Multiplying a matrix by a matrix: matrix[M][K] * matrix[K][N] = matrix[M][N]
matrix matrix::MatMul(
|
Multiplying a vector by a matrix: horizontal vector[K] * matrix[K][N] = horizontal vector[N]
vector vector::MatMul(
|
Multiplying a matrix by a vector: matrix[M][K] * vertical vector[K] = vertical vector[M]
vector matrix::MatMul(
|
Scalar vector multiplication: horizontal vector * vertical vector = dot value
scalar vector::MatMul(
|
매개 변수
b
[in] 헹렬 혹은 벡터.
반환값
사용된 메서드에 따라 행렬, 벡터 또는 스칼라.
참조
행렬은 곱셈과 호환되어야 합니다. 즉, 첫 번째 행렬의 열 수가 두 번째 행렬의 행 수와 같아야 합니다. 행렬 곱셈은 비가환적입니다. 일반적인 경우 첫 번째 행렬에 두 번째 행렬을 곱한 결과는 두 번째 행렬에 첫 번째 행렬을 곱한 결과와 같지 않습니다.
행렬 곱은 첫 번째 행렬의 행 벡터와 두 번째 행렬의 열 벡터의 스칼라 곱의 가능한 모든 조합으로 구성됩니다.
스칼라 곱셈에서 벡터는 길이가 같아야 합니다.
벡터와 행렬을 곱할 때 벡터의 길이는 행렬의 열 수와 정확히 일치해야 합니다.
MQL5의 간단한 행렬 곱셈 알고리즘:
matrix MatrixProduct(const matrix& matrix_a, const matrix& matrix_b)
|
행렬 곱셈 예제
matrix a={{1, 0, 0},
|
수평 벡터에 행렬을 곱하는 예
//+------------------------------------------------------------------+
|
행렬에 수직 벡터를 곱하는 방법의 예
//+------------------------------------------------------------------+
|
벡터의 스칼라(dot) product의 예
void OnStart()
|
또다른 참조