行列とベクトル
行列とは、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"
|
C++
extern "C" __declspec(dllexport) bool sgemm(UINT flags, float *C, const float *A, const float *B, UINT64 M, UINT64 N, UINT64 K, float alpha, float beta) |
正しく処理するためには、バッファに加えて行列とベクトルのサイズを渡す必要があります。
以下では、すべての行列メソッドとベクトルメソッドをアルファベット順に示します。
関数 |
アクション |
カテゴリ |
---|---|---|
活性化関数の値を計算し、渡されたベクトル/行列に書き込みます |
||
最大値のインデックスを返します |
||
最小値のインデックスを返します |
||
並び替えられたインデックスを返します |
||
自動キャストで行列、ベクトル、または配列をコピーします |
||
行列/ベクトル値の加重平均を計算します |
||
コレスキー分解を計算します |
||
行列/ベクトルの要素を有効な値の与えられた範囲に制限します |
||
列ベクトルを返します。指定された列にベクトルを書き込みます。 |
||
行列の列数を返します |
||
指定された精度で2つの行列/ベクトルの要素を比較します |
||
2つの行列/ベクトルの要素を有効数字の精度で比較します |
||
行列の条件数を計算します |
||
2つのベクトルの離散線形畳み込みを返します |
||
指定された行列/ベクトルのコピーを返します |
||
指定された量の指定された銘柄期間のMqlRates構造体の履歴シリーズを行列/ベクトルに取得します |
||
MqlTick構造体からティックを行列/ベクトルに取得します |
||
指定された日付範囲内のMqlTick構造体からティックを取得して行列/ベクトルにします |
||
ピアソン相関係数(線形相関係数)を計算します |
||
2つのベクトルの相互相関を計算します |
||
共分散行列を計算します |
||
指定された軸に沿ったものを含む、行列/ベクトル要素の累積積を返します |
||
指定された軸に沿ったものを含む、行列/ベクトル要素の累積和を返します |
||
活性化関数の導関数値を計算し、渡されたベクトル/行列に書き込みます |
||
可逆正方行列の行列式を計算します |
||
対角を抽出するか、対角行列を構築します |
||
2つのベクトルの内積 |
||
正方行列の固有値と右固有ベクトルを計算します |
||
一般行列の固有値を計算します |
||
対角に1を、それ以外に0を含む行列を返します |
||
既存の行列/ベクトルに指定された値を書き入れます |
||
2つではなく1つのインデックスを介して行列要素にアクセスします |
||
指定された値で埋められた新しい行列を作成して返します |
||
GeMM (General Matrix Multiply)メソッドは、2つの行列の汎用乗算を実装します |
||
行列を複数の部分行列に水平に分割します(axis=0のSplitと同じ) |
||
指定されたサイズの単位行列を作成します |
||
行列/ベクトルの初期化 |
||
2つの行列の内積 |
||
ジョーダン・ガウス法により正方可逆行列の乗法逆行列を計算します |
||
2つの行列、行列とベクトル、ベクトルと行列、または2つのベクトルのクロネッカー積を返します |
||
損失関数値を計算し、渡されたベクトル/行列に書き込みます |
||
線形代数方程式の最小二乗解を返します(非正方行列または縮退行列の場合) |
||
行列のLU分解を実装します(下三角行列と上三角行列の積) |
||
部分置換によるLUP分解を実装します(行順列のみのLU分解:PA=LU) |
||
2つの行列の行列積 |
||
行列/ベクトルの最大値を返します |
||
要素値の算術平均を計算します |
||
行列/ベクトル要素の中央値を計算します |
||
行列/ベクトルの最小値を返します |
||
行列/ベクトルのノルムを返します |
||
1で埋められた新しい行列を作成して返します |
||
2つの行列または2つのベクトルの外積を計算します |
||
行列/ベクトル要素または指定された軸に沿った要素の値の指定されたパーセンタイルを返します |
||
ムーア・ペンローズ逆行列法による行列の疑似逆行列を計算します |
||
正方行列を整数乗します |
||
行列/ベクトル要素の積を返します(指定された軸に対しても実行可能) |
||
行列/ベクトルまたは指定された行列軸の値の範囲を返します |
||
行列のQR分解を計算します |
||
行列/ベクトル要素または指定された軸に沿った要素の値の指定された分位数を返します |
||
ガウス法を使用して行列ランクを返します |
||
指定されたデータ配列で構築された回帰直線からの偏差エラーとして回帰指標を計算します |
||
データを変更せずに行列の形状を変更します |
||
形状とサイズが変更された新しい行列を返します |
||
行ベクトルを返します。指定された行にベクトルを書き込みます |
||
行列の行数を返します |
||
ベクトルのサイズを返します |
||
行列式の符号と対数を計算します |
||
線形行列方程式または線形代数方程式系を解きます |
||
場所によって並び替えます |
||
積AT*Aからの固有値のセットとして行列のスペクトルを計算します |
||
行列を複数の部分行列に分割します |
||
行列/ベクトル要素または指定された軸に沿った要素の値の標準偏差を返します |
||
行列/ベクトル要素の合計を返します(指定された軸に対しても実行可) |
||
特異値分解 |
||
行列の列を入れ替えます |
||
行列の行を入れ替えます |
||
行列の対角線に沿って合計を返します |
||
転置 (軸を交換) して、修正された行列を返します |
||
指定された対角線とその下に1があり、それ以外が0の行列を作成します |
||
k番目の対角より上の要素をゼロにした行列のコピーを返します(下三角行列) |
||
k番目の対角より下の要素を0にした行列のコピーを返します(上三角行列) |
||
行列/ベクトル要素の値の分散を計算します |
||
行列を複数の部分行列に垂直に分割します(axis=1のSplitと同じ) |
||
0で埋められた新しい行列を作成して返します |