Оператор матричного произведения @

Оператор @ в языке MQL5 реализует матричное умножение по правилам линейной алгебры. Он позволяет выполнять произведение матриц, векторов и скалярное произведение векторов.

Поддерживаемые типы элементов:

  • float
  • double
  • complex<float>
  • complex<double>

Важно: типы элементов в левом и правом операндах должны совпадать.

Примеры использования

1. Матричное умножение (матрица × матрица)

matrix A(23);
matrix B(32);
matrix C = A @ B// Результат: матрица C размером [2,2]

 

2. Матричное умножение (матрица × вектор)

matrix M(23);
vector V(3);
vector R = M @ V// Результат: вектор R из 2 элементов

3. Матричное умножение (вектор × матрица)

matrix M(23);
vector V(12);
vector R = V @ M// Результат: вектор R из 3 элементов

4. Скалярное произведение (вектор × вектор)

vector V1(13), V2(13);
double r = V1 @ V2// Результат: скаляр

Примечание

Размерности должны соответствовать правилам умножения: число столбцов в первом операнде = числу строк во втором.

В случае ошибки размерностей будет выброшено исключение на этапе выполнения.

Векторы слева считаются горизонтальными (1×n).

Векторы справа считаются вертикальными  (n×1).

Приоритет опреации @ соответствует приоритету умножения, т.е. для записи вида D=C+A@B, сначала будет произведено матричное умножение T=A@B, затем поэлементное сложение D=C+T.

Смотри также

MatMul, GeMM, Kron, Dot,