Split

Aufteilen einer Matrix in mehrere Submatrizen.

bool matrix::Split(
  const ulong  parts,      // Anzahl der Submatrizen
  const int    axis,       // Achse
  matrix&      splitted[]  // Array der resultierenden Submatrizen
   );
 
void matrix::Split(
  const ulong& parts[],    // Größen der Submatrizen
  const int    axis,       // Achse
  matrix&      splitted[]  // Array der resultierenden Submatrizen
   );

Parameter

parts

[in] Die Anzahl der Submatrizen, in die die Matrix aufgeteilt werden soll.

axis

[in]  Achse. 0 - horizontale Achse, 1 - vertikale Achse.

splitted

[out] Array der resultierenden Submatrizen.

Rückgabewert

Gibt bei Erfolg true zurück, andernfalls false.

Hinweis

Wird die Anzahl der Submatrizen angegeben, so erhält man gleich große Teilmatrizen. Das bedeutet, dass die Größe der Matrix (0 - die Anzahl der Zeilen, 1 - die Anzahl der Spalten) ohne Rest durch "parts" teilbar sein muss. Submatrizen unterschiedlicher Größe können mit Hilfe eines Arrays von Submatrixgrößen erhalten werden. Die Elemente des Arrays mit den Größen werden so lange verwendet, bis die gesamte Matrix aufgeteilt ist. Wenn das Array der Größen zu Ende ist und die Matrix noch nicht vollständig aufgeteilt wurde, ist der ungeteilte Rest die letzte Submatrix.

Beispiel

   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]]
  */