Operador de multiplicação de matrizes @

O operador @ na linguagem MQL5 realiza a multiplicação de matrizes de acordo com as regras da álgebra linear. Permite realizar multiplicação de matrizes, vetores e produto escalar de vetores.

Tipos de elementos suportados:

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

Importante: os tipos dos elementos nos operandos esquerdo e direito devem ser iguais.

Exemplos de uso

1. Multiplicação de matrizes (matriz × matriz)

matrix A(23);
matrix B(32);
matrix C = A @ B// Resultado: matriz C de tamanho [2,2]

 

2. Multiplicação de matrizes (matriz × vetor)

matrix M(23);
vector V(3);
vector R = M @ V// Resultado: vetor R com 2 elementos

3. Multiplicação de matrizes (vetor × matriz)

matrix M(23);
vector V(12);
vector R = V @ M// Resultado: vetor R com 3 elementos

4. Produto escalar (vetor × vetor)

vector V1(13), V2(13);
double r = V1 @ V2// Resultado: escalar

Observação

As dimensões devem seguir as regras da multiplicação: o número de colunas no primeiro operando = número de linhas no segundo.

Se houver erro de dimensão, será lançada uma exceção em tempo de execução.

Vetores à esquerda são considerados horizontais (1×n).

Vetores à direita são considerados verticais (n×1).

A prioridade da operação @ corresponde à prioridade da multiplicação, ou seja, numa expressão como D=C+A@B, primeiro será feita a multiplicação de matrizes T=A@B, depois a soma elemento a elemento D=C+T.

Veja também

MatMul, GeMM, Kron, Dot,