Split

Divise une matrice en plusieurs sous-matrices.

bool matrix::Split(
  const ulong  parts,      // nombre de sous-matrices
  const int    axis,       // axe
  matrix&      splitted[]  // tableau de sous-matrices résultantes
   );
 
void matrix::Split(
  const ulong& parts[],    // tailles des sous-matrices
  const int    axis,       // axe
  matrix&      splitted[]  // tableau de sous-matrices résultantes
   );

Paramètres

parts

[in] Le nombre de sous-matrices dans lesquelles diviser la matrice.

axis

[in]  Axe. 0 - axe horizontal, 1 - axe vertical.

splitted

[out] Tableau des sous-matrices résultantes.

Valeur de Retour

Renvoie true en cas de succès, false sinon.

Note

Si le nombre de sous-matrices est spécifié, alors des sous-matrices de même taille sont obtenues. Cela signifie que la taille de la matrice (0 - le nombre de lignes, 1 - le nombre de colonnes) doit être divisible par des "parties" sans reste. Des sous-matrices de tailles différentes peuvent être obtenues en utilisant un tableau de tailles de sous-matrices. Les éléments du tableau de taille sont utilisés jusqu'à ce que la matrice entière soit divisée. Si le tableau des tailles est terminé et que la matrice n'a pas encore été complètement divisée, le reste non divisé sera la dernière sous-matrice.

Exemple

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