Vsplit

Teilt eine Matrix vertikal in mehrere Submatrizen auf. Entspricht Split mit Achse=1

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

Parameter

parts

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

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 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}};
   matrix splitted[];
   ulong  parts[]={2,3};
 
   matrix_a.Vsplit(2,splitted);
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   matrix_a.Vsplit(3,splitted);
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   matrix_a.Vsplit(parts,splitted);
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
 
  /*
     splitted 0
     [[1,2,3]
      [7,8,9]
      [13,14,15]]
     splitted 1
     [[4,5,6]
      [10,11,12]
      [16,17,18]]
 
     splitted 0
     [[1,2]
      [7,8]
      [13,14]]
     splitted 1
     [[3,4]
      [9,10]
      [15,16]]
     splitted 2
     [[5,6]
      [11,12]
      [17,18]]
 
     splitted 0
     [[1,2]
      [7,8]
      [13,14]]
     splitted 1
     [[3,4,5]
      [9,10,11]
      [15,16,17]]
     splitted 2
     [[6]
      [12]
      [18]]
 
  */