【MQL5】ENUM_MATRIX_AXIS列挙体について

ENUM_MATRIX_AXIS列挙体は、行列に対する統計系の関数で「どの向きに沿って計算するか」を指定するための列挙体です。行列の平均や合計、分散などを求めるときに、行列全体をまとめて1回で計算したい場合もあれば、行ごと、列ごとに分けて計算したい場合もあります。その「まとめ方」を決めるのが軸の指定です。

軸の指定をしない形はAXIS_NONE、指定する形はAXIS_HORZまたはAXIS_VERTを使います。

スポンサーリンク
スポンサーリンク

AXIS_NONE

AXIS_NONEは、軸を指定しない指定です。この指定のときは、計算が行列の全要素に対して行われ、行列をベクトルのように扱って処理されます。公式リファレンスでは、Flatメソッドを使って1次元として扱うイメージに近いことが示されています。

Flatメソッドは、行列の要素を行と列の2つの番号ではなく、1つの番号で扱えるようにする仕組みです。AXIS_NONEの「行列をベクトルのように扱う」は、要素を横に並べ直して1列のデータのように見ている、と考えると理解しやすくなります。

たとえば、平均や合計のような「全体を1つの値にまとめる」統計関数では、AXIS_NONEを使うと行列全体から1つの結果を得る形になりやすく、行や列ごとの結果が欲しいときは、次に説明するAXIS_HORZやAXIS_VERTを使うことになります。

AXIS_HORZ

AXIS_HORZは、水平軸を指定します。

水平という言葉は、紙の上で左から右へ読む向きを思い浮かべると分かりやすいです。行列で言えば、同じ行の中で左から右へ要素をたどる方向です。統計関数でAXIS_HORZを指定すると、各行をひとまとまりとして計算し、その行ごとの結果を並べた形を受け取る、と考えるのが自然です。

軸を指定する統計関数の説明では、水平軸と垂直軸を指定できることが明示されています。たとえばLinearRegressionのように、行列に対して軸を指定して計算する関数が用意されています。

また、別の統計関数の説明では、軸の指定として「0が水平軸、1が垂直軸」という対応が示されています。ENUM_MATRIX_AXIS列挙体のAXIS_HORZとAXIS_VERTも、この水平と垂直の考え方で使い分ける形になります。

AXIS_VERT

AXIS_VERTは、垂直軸を指定します。

垂直という言葉は、上から下へ読む向きを思い浮かべると分かりやすいです。行列で言えば、同じ列の中で上から下へ要素をたどる方向です。統計関数でAXIS_VERTを指定すると、各列をひとまとまりとして計算し、その列ごとの結果を並べた形を受け取る、と考えるのが自然です。

水平軸と垂直軸のどちらを使うかは、行列の中にどのようにデータを並べたかで決まります。たとえば、行がデータの単位で列が項目という並べ方なら、行ごとに集計したいときはAXIS_HORZ、列ごとに集計したいときはAXIS_VERTという選び方になります。軸の指定が水平と垂直で分かれていること自体は、ENUM_MATRIX_AXIS列挙体の説明と、軸の指定を受け取る統計関数の説明に沿ったものです。

タイトルとURLをコピーしました