Init

行列/ベクトルを初期化します。

void matrix::Init(
  const ulong  rows,            // 行数
  const ulong  cols,           // 列数
func_name   init_func=NULL, // クラスのスコープまたは静的メソッドに配置されたinit関数
  ...         parameters
  );
 
void vector::Init(
  const ulong  size,            // vector size
func_name   init_func=NULL, // クラスのスコープまたは静的メソッドに配置されたinit関数
  ...         parameters
  );
 

パラメータ

rows

[in] 行数

cols

[in] 列数

func_name

[in] 初期化関数

...

[in] 初期化関数のパラメータ

戻り値

なし。

template<typename T>
void MatrixArange(matrix<T> &mat,T value=0.0,T step=1.0)
 {
  for(ulong i=0; i<mat.Rows(); i++)
    {
    for(ulong j=0; j<mat.Cols(); j++,value+=step)
        mat[i][j]=value;
    }
 }
template<typename T>
void VectorArange(vector<T> &vec,T value=0.0,T step=1.0)
 {
  for(ulong i=0; i<vec.Size(); i++,value+=step)
    vec[i]=value;
 }
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//---
int size_m=3, size_k=4;
matrix m(size_m,size_k,MatrixArange,-2.,0.1); // 最初に、サイズがsize_m x size_kの初期化されていない行列が作成されてから、
Print("matrix m \n",m);                       // 次に、初期化時にリストされたパラメータを使用して関数 MatrixArangeが呼び出される
matrixf m_float(5,5,MatrixArange,-2.f,0.1f);   // float型の行列が作成された後、MatrixArange関数が呼び出される
Print("matrix m_float \n",m_float);
vector v(size_k,VectorArange,-10.0);         // ベクトルが作成された後、1つのパラメータを持つVectorArangeが呼び出される。2番目のパラメータがデフォルト
Print("vector v \n",v);  
 /*
  matrix m
  [[-2,-1.9,-1.8,-1.7]
   [-1.6,-1.5,-1.399999999999999,-1.299999999999999]
   [-1.199999999999999,-1.099999999999999,-0.9999999999999992,-0.8999999999999992]]
  matrix m_float
  [[-2,-1.9,-1.8,-1.6999999,-1.5999999]
   [-1.4999999,-1.3999999,-1.2999998,-1.1999998,-1.0999998]
   [-0.99999976,-0.89999974,-0.79999971,-0.69999969,-0.59999967]
   [-0.49999967,-0.39999968,-0.29999968,-0.19999969,-0.099999689]
   [3.1292439e-07,0.10000031,0.20000032,0.30000031,0.4000003]]
  vector v
  [-10,-9,-8,-7]
 */
 }