行列積演算子@

@ MQL5演算子は、線形代数のルールに従って行列の積を実装するための演算子です。この演算子を使用することで、行列とベクトルの乗算や、ベクトルのスカラー倍を行うことができます。

対応要素型:

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

重要:左辺と右辺のオペランドにおける要素の型は一致している必要があります。

使用例

1. 行列乗算(行列x行列)

matrix A(2, 3);
matrix B(3, 2);
matrix C = A @ B; // 結果:サイズ[2,2]の行列C

 

2. 行列乗算(行列xベクトル)

matrix M(2, 3);
vector V(3);
vector R = M @ V; // 結果:2要素のベクトルR

3. 行列乗算(ベクトルx行列)

matrix M(2, 3);
vector V(1, 2);
vector R = V @ M; // 結果:3要素のベクトルR

4. スカラー倍(ベクトルxベクトル)

vector V1(1, 3), V2(1, 3);
double r = V1 @ V2; // 結果:スカラー

注意事項

乗算を行うには、次元ルール「左側のオペランドの列数 = 右側のオペランドの行数」を満たす必要があります。

次元が一致しない場合は、実行時に例外が発生します。

左側のベクトルは横ベクトル(1×n)として扱われます。

右側のベクトルは縦ベクトル(n×1)として扱われます。

@の演算子優先順位は通常の掛け算と同じです。つまり、「D = C + A @ B」のような式では、まず行列積「T = A @ B」が計算され、その後で「D = C + T」のように要素ごとの加算が行われます。

参照

MatMulGeMMKronDot