Başlatma

Matrisleri ve vektörleri bildirmenin ve başlatmanın birkaç yolu vardır.

Fonksiyon

Eylem

Assign

Otomatik dönüştürmeyle matrisi, vektörü veya diziyi kopyalar

CopyIndicatorBuffer

Belirtilen gösterge arabelleğinden belirtilen miktarda veriyi vektöre alır

CopyRates

Belirtilen sembol, zaman dilimi ve veri miktarı için MqlRates yapısından matrise veya vektöre geçmiş seriler alır

CopyTicks

MqlTick yapısından matrise veya vektöre tikler alır

CopyTicksRange

Belirtilen tarih aralığı için MqlTick yapısından matrise veya vektöre tikler alır

Eye

Köşegende 1'lerin ve diğer yerlerde 0'ların olduğu bir matris geri döndürür

Identity

Belirtilen büyüklükte bir birim matris oluşturur

Ones

1'lerle dolu yeni bir matris oluşturur ve geri döndürür

Zeros

0'larla dolu yeni bir matris oluşturur ve geri döndürür

Full

Belirtilen değerle dolu yeni bir matris oluşturur ve geri döndürür

Tri

İstenilen köşegende ve altında 1'lerin ve diğer yerlerde 0'ların olduğu bir matris oluşturur

Init

Matrisi veya vektörü başlatır

Fill

Matrisi veya vektörü belirtilen değerle doldurur

Büyüklük belirtilmeden bildirim (veriler için bellek tahsisi yoktur):

  matrix         matrix_a;   // double türünde matris
  matrix<doublematrix_a1;  // double türünde matris bildirmenin başka bir yolu; şablonlarda kullanılabilir
  matrixf        matrix_a2;  // float türünde matris
  matrix<float>  matrix_a3;  // float türünde matris
  vector         vector_a;   // double türünde vektör
  vector<doublevector_a1;
  vectorf        vector_a2;  // float türünde vektör
  vector<float>  vector_a3;

 

Belirtilen büyüklükle bildirim (veriler için bellek tahsisiyle, ancak herhangi bir başlatma olmadan):

  matrix         matrix_a(128,128);           // parametreler sabit olabilir
  matrix<doublematrix_a1(InpRows,InpCols);  // parametreler değişken olabilir
  matrixf        matrix_a2(1,128);            // yatay vektörün analoğu
  matrix<float>  matrix_a3(InpRows,1);        // dikey vektörün analoğu
  vector         vector_a(256);
  vector<doublevector_a1(InpSize);
  vectorf        vector_a2(SomeFunc());       // SomeFunc fonksiyonu, vektör büyüklüğünü ayarlamak için kullanılan ulong türü bir sayı geri döndürür
  vector<float>  vector_a3(InpSize+16);       // ifade parametre olarak kullanılabilir

 

Başlatmayla bildirim (matris ve vektör büyüklükleri başlatma sırasında belirlenir):

  matrix         matrix_a={{0.1,0.2,0.3},{0.4,0.5,0.6}};
  matrix<doublematrix_a1=matrix_a;                      // aynı türden matrisler olmalıdır
  matrixf        matrix_a2={{1,0,0},{0,1,0},{0,0,1}};
  matrix<float>  matrix_a3={{1,2},{3,4}};
  vector         vector_a={-5,-4,-3,-2,-1,0,1,2,3,4,5};
  vector<doublevector_a1={1,5,2.4,3.3};
  vectorf        vector_a2={0,1,2,3};
  vector<float>  vector_a3=vector_a2;                     // aynı türden vektörler olmalıdır

 

Başlatmayla bildirim:

template<typename T>
void MatrixArange(matrix<T> &mat,T value=0.0,T step=1.0)
  {
   for(ulong i=0i<mat.Rows(); i++)
     {
      for(ulong j=0j<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=0i<vec.Size(); i++,value+=step)
      vec[i]=value;
  }
...
 
  matrix  matrix_a(size_m,size_k,MatrixArange,-M_PI,0.1); // önce size_m x size_k büyüklüğünde başlatılmamış bir matris oluşturulur, daha sonra başlatma sırasında listelenen parametrelerle MatrixArange fonksiyonu çağrılır
  matrixf matrix_a1(10,20,MatrixArange);                  // float türünde bir matris oluşturulduktan sonra, varsayılan parametrelerle MatrixArange fonksiyonu çağrılır
  vector  vector_a(size,VectorArange,-10.0);              // vektör oluşturulduktan sonra, tek parametreli VectorArange fonksiyonu çağrılır; ikinci parametresi varsayılandır
  vectorf vector_a1(128,VectorArange);

 

Veriler için bellek her zaman dinamik olduğundan, matris veya vektör büyüklüklerinin değiştirilebileceğini lütfen unutmayın.

Statik metotlar

Belirli bir şekilde başlatılan, belirtilen büyüklükte matrisler ve vektörler oluşturmak için statik metotlar:

  matrix         matrix_a =matrix::Eye(4,5,1);
  matrix<doublematrix_a1=matrix::Full(3,4,M_PI);
  matrixf        matrix_a2=matrixf::Identity(5,5);
  matrixf<floatmatrix_a3=matrixf::Ones(5,5);
  matrix         matrix_a4=matrix::Tri(4,5,-1);
  vector         vector_a =vector::Ones(256);
  vectorf        vector_a1=vector<float>::Zeros(16);
  vector<float>  vector_a2=vectorf::Full(128,float_value);

 

Önceden oluşturulmuş matrisleri ve vektörleri başlatma metotları:

  matrix  matrix_a;
  matrix_a.Init(size_m,size_k,MatrixArange,-M_PI,0.1);
  matrixf matrix_a1(3,4);
  matrix_a1.Init(10,20,MatrixArange);
  vector  vector_a;
  vector_a.Init(128,VectorArange);
  vectorf vector_a1(10);
  vector_a1.Init(vector_size,VectorArange,start_value,step);
 
  matrix_a.Fill(double_value);
  vector_a1.Fill(FLT_MIN);
  matrix_a1.Identity();