Hsplit

Horizontales Teilen einer Matrix in mehrere Submatrizen. Dasselbe wie Split mit axis=0.

bool matrix::Hsplit(
  const ulong  parts,      // Anzahl der Submatrizen
  matrix&      splitted[]  // Array der resultierenden Submatrizen
   );
 
void matrix::Hsplit(
  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 Zeilen durch "parts" ohne Rest 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,4};
 
   bool res=matrix_a.Hsplit(2,splitted);
   Print(res,"  ",GetLastError());
   ResetLastError();
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   res=matrix_a.Hsplit(5,splitted);
   Print(res,"  ",GetLastError());
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   res=matrix_a.Hsplit(parts,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,4,5,6]]
  splitted 1
  [[7,8,9,10,11,12]]
  splitted 2
  [[13,14,15,16,17,18]]
  splitted 3
  [[19,20,21,22,23,24]]
  splitted 4
  [[25,26,27,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]
  [25,26,27,28,29,30]]
  */