Split

Bir matrisi birden çok alt matrise böler.

bool matrix::Split(
  const ulong  parts,      // alt matris sayısı
  const int    axis,       // eksen
  matrix&      splitted[]  // ortaya çıkan alt matris
   );
 
void matrix::Split(
  const ulong& parts[],    // alt matrislerin büyüklükleri
  const int    axis,       // eksen
  matrix&      splitted[]  // ortaya çıkan alt matris
   );

Parametreler

parts

[in] Matrisin bölüneceği alt matris sayısı.

axis

[in]  Eksen. 0 - yatay eksen, 1 - dikey eksen.

splitted

[out] Ortaya çıkan alt matris.

Geri dönüş değeri

Başarılı olursa true, aksi takdirde false geri döndürür.

Not

Alt matris sayısı belirtilirse, aynı büyüklükte alt matrisler elde edilir. Bu, matris büyüklüğünün (0 - satır sayısı, 1 - sütun sayısı) parts parametresine kalansız olarak bölünebilir olması gerektiği anlamına gelir. Elde edilecek alt matrislerin büyüklükleri belirtilerek farklı büyüklüklerde alt matrisler elde edilebilir. Matris belirtilen büyüklükteki alt matrisler için bölünmeye başlayacaktır. Eğer belirtilen büyüklükteki alt matrisler dolduysa ve matris hala tamamen bölünmediyse, bölünmemiş kalan kısım son alt matris olarak yazılacaktır.

Örnek:

   matrix matrix_a={{ 123456},
                    { 789,10,11,12},
                    {13,14,15,16,17,18},
                    {19,20,21,22,23,24},
                    {25,26,27,28,29,30}};
   matrix splitted[];
   ulong  parts[]={2,2};
 
   bool res=matrix_a.Split(2,0,splitted);
   Print(res,"  ",GetLastError());
   ResetLastError();
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   res=matrix_a.Split(2,1,splitted);
   Print(res,"  ",GetLastError());
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   res=matrix_a.Split(parts,0,splitted);
   Print(res,"  ",GetLastError());
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
  /*
  false  4003
  true  0
  splitted 0
  [[1,2,3]
   [7,8,9]
   [13,14,15]
   [19,20,21]
   [25,26,27]]
  splitted 1
  [[4,5,6]
   [10,11,12]
   [16,17,18]
   [22,23,24]
   [28,29,30]]
  true  0
  splitted 0
  [[1,2,3,4,5,6]
   [7,8,9,10,11,12]]
  splitted 1
  [[13,14,15,16,17,18]
   [19,20,21,22,23,24]]
  splitted 2
  [[25,26,27,28,29,30]]
  */