行列とベクトル

行列とは、double、float、または複素数の2次元配列です。

ベクトルとは、double、float、または複素数の1次元配列です。ベクトルでは、垂直か水平かは示されず、これは使用状況から判断されます。たとえば、ドット積ベクトル演算では、左のベクトルが水平で、右のベクトルが垂直であると想定します。種類を示すことが必要な場合は、1行または1列の行列を使用することができますが、これは通常必要ありません。

行列とベクトルでは、データのメモリを動的に割り当てます。実際、行列とベクトルは、含まれるデータの種類や次元など、特定のプロパティを持つオブジェクトです。行列とベクトルのプロパティは、vector_a.Size()、matrix_b.Rows()、vector_c.Norm()、matrix_d.Cond()などのメソッドを使用して取得できます。任意の次元を変更することができます。

行列を作成して初期化するときには、いわゆる静的メソッドが使用されます(これらはクラスの静的メソッドのようなものです)。matrix::Eye()、matrix::Identity()、matrix::Ones()、vector::Ones()、matrix::Zeros()、vector::Zeros()、matrix::Full( )、vector::Full()、matrix::Tri()はその例です。

現時点では、この開発の方向性がまだ完了していないため、行列演算とベクトル演算においての複素数データ型の使用は示唆されていません。

MQL5は、行列とベクトルのDLLへの受け渡しをサポートしています。これにより、関連する型を使用する関数を外部変数からインポートできます。

行列とベクトルは、バッファへのポインタとしてDLLに渡されます。たとえば、float型の行列を渡すには、DLLからエクスポートされた関数の対応するパラメータが、float型のバッファポインタを受け取る必要があります。

MQL5

#import "mmlib.dll"
bool sgemm(uint flags, matrix<float> &C, const matrix<float> &A, const matrix<float> &B, ulong M, ulong N, ulong K, float alpha, float beta);
#import

C++

extern "C" __declspec(dllexport) bool sgemm(UINT flags, float *Cconst float *Aconst float *B, UINT64 M, UINT64 N, UINT64 K, float alpha, float beta)

正しく処理するためには、バッファに加えて行列とベクトルのサイズを渡す必要があります。

以下では、すべての行列メソッドとベクトルメソッドをアルファベット順に示します。

関数

アクション

カテゴリ

Activation

活性化関数の値を計算し、渡されたベクトル/行列に書き込みます

機械学習

ArgMax

最大値のインデックスを返します

統計

ArgMin

最小値のインデックスを返します

統計

ArgSort

並び替えられたインデックスを返します

操作

Assign

自動キャストで行列、ベクトル、または配列をコピーします

初期化

Average

行列/ベクトル値の加重平均を計算します

統計

Cholesky

コレスキー分解を計算します

変換

Clip

行列/ベクトルの要素を有効な値の与えられた範囲に制限します

操作

Col

列ベクトルを返します。指定された列にベクトルを書き込みます。

操作

Cols

行列の列数を返します

特徴

Compare

指定された精度で2つの行列/ベクトルの要素を比較します

操作

CompareByDigits

2つの行列/ベクトルの要素を有効数字の精度で比較します

操作

Cond

行列の条件数を計算します

特徴

Convolve

2つのベクトルの離散線形畳み込みを返します

Copy

指定された行列/ベクトルのコピーを返します

操作

CopyIndicatorBuffer

指定された指標バッファのデータを指定された数量でベクトルに取得します

初期化

CopyRates

指定された量の指定された銘柄期間のMqlRates構造体の履歴シリーズを行列/ベクトルに取得します

初期化

CopyTicks

MqlTick構造体からティックを行列/ベクトルに取得します

初期化

CopyTicksRange

指定された日付範囲内のMqlTick構造体からティックを取得して行列/ベクトルにします

初期化

CorrCoef

ピアソン相関係数(線形相関係数)を計算します

Correlate

2つのベクトルの相互相関を計算します

Cov

共分散行列を計算します

CumProd

指定された軸に沿ったものを含む、行列/ベクトル要素の累積積を返します

統計

CumSum

指定された軸に沿ったものを含む、行列/ベクトル要素の累積和を返します

統計

Derivative

活性化関数の導関数値を計算し、渡されたベクトル/行列に書き込みます

機械学習

Det

可逆正方行列の行列式を計算します

特徴

Diag

対角を抽出するか、対角行列を構築します

操作

Dot

2つのベクトルの内積

Eig

正方行列の固有値と右固有ベクトルを計算します

変換

EigVals

一般行列の固有値を計算します

変換

Eye

対角に1を、それ以外に0を含む行列を返します

初期化

Fill

既存の行列/ベクトルに指定された値を書き入れます

初期化

Flat

2つではなく1つのインデックスを介して行列要素にアクセスします

操作

Full

指定された値で埋められた新しい行列を作成して返します

初期化

GeMM

GeMM (General Matrix Multiply)メソッドは、2つの行列の汎用乗算を実装します

Hsplit

行列を複数の部分行列に水平に分割します(axis=0のSplitと同じ)

操作

Identity

指定されたサイズの単位行列を作成します

初期化

Init

行列/ベクトルの初期化

初期化

Inner

2つの行列の内積

Inv

ジョーダン・ガウス法により正方可逆行列の乗法逆行列を計算します

Kron

2つの行列、行列とベクトル、ベクトルと行列、または2つのベクトルのクロネッカー積を返します

Loss

損失関数値を計算し、渡されたベクトル/行列に書き込みます

機械学習

LstSq

線形代数方程式の最小二乗解を返します(非正方行列または縮退行列の場合)

LU

行列のLU分解を実装します(下三角行列と上三角行列の積)

変換

LUP

部分置換によるLUP分解を実装します(行順列のみのLU分解:PA=LU)

変換

MatMul

2つの行列の行列積

Max

行列/ベクトルの最大値を返します

統計

Mean

要素値の算術平均を計算します

統計

Median

行列/ベクトル要素の中央値を計算します

統計

Min

行列/ベクトルの最小値を返します

統計

Norm

行列/ベクトルのノルムを返します

特徴

Ones

1で埋められた新しい行列を作成して返します

初期化

Outer

2つの行列または2つのベクトルの外積を計算します

Percentile

行列/ベクトル要素または指定された軸に沿った要素の値の指定されたパーセンタイルを返します

統計

PInv

ムーア・ペンローズ逆行列法による行列の疑似逆行列を計算します

Power

正方行列を整数乗します

Prod

行列/ベクトル要素の積を返します(指定された軸に対しても実行可能)

統計

Ptp

行列/ベクトルまたは指定された行列軸の値の範囲を返します

統計

QR

行列のQR分解を計算します

変換

Quantile

行列/ベクトル要素または指定された軸に沿った要素の値の指定された分位数を返します

統計

Rank

ガウス法を使用して行列ランクを返します

特徴

RegressionMetric

指定されたデータ配列で構築された回帰直線からの偏差エラーとして回帰指標を計算します

統計

Reshape

データを変更せずに行列の形状を変更します

操作

Resize

形状とサイズが変更された新しい行列を返します

操作

Row

行ベクトルを返します。指定された行にベクトルを書き込みます

操作

Rows

行列の行数を返します

特徴

Set

指定されたインデックスのベクトル要素の値を設定します

操作

Size

ベクトルのサイズを返します

特徴

SLogDet

行列式の符号と対数を計算します

特徴

Solve

線形行列方程式または線形代数方程式系を解きます

Sort

場所によって並び替えます

操作

Spectrum

積AT*Aからの固有値のセットとして行列のスペクトルを計算します

特徴

Split

行列を複数の部分行列に分割します

操作

Std

行列/ベクトル要素または指定された軸に沿った要素の値の標準偏差を返します

統計

Sum

行列/ベクトル要素の合計を返します(指定された軸に対しても実行可)

統計

SVD

特異値分解

変換

SwapCols

行列の列を入れ替えます

操作

SwapRows

行列の行を入れ替えます

操作

Trace

行列の対角線に沿って合計を返します

特徴

Transpose

転置 (軸を交換) して、修正された行列を返します

操作

Tri

指定された対角線とその下に1があり、それ以外が0の行列を作成します

初期化

TriL

k番目の対角より上の要素をゼロにした行列のコピーを返します(下三角行列)

操作

TriU

k番目の対角より下の要素を0にした行列のコピーを返します(上三角行列)

操作

Var

行列/ベクトル要素の値の分散を計算します

統計

Vsplit

行列を複数の部分行列に垂直に分割します(axis=1のSplitと同じ)

操作

Zeros

0で埋められた新しい行列を作成して返します

初期化