Split

Partición de una matriz en varias submatrices.

bool matrix::Split(
  const ulong  parts,      // número de submatrices
  const int    axis,       // eje
  matrix&      splitted[]  // array de submatrices obtenidas
   );
 
void matrix::Split(
  const ulong& parts[],    // dimensiones de las submatrices
  const int    axis,       // eje
  matrix&      splitted[]  // array de submatrices obtenidas
   );

Parámetros

parts

[in]  Número de submatrices en el que se debe dividir la matriz.

axis

[in]  Eje. 0 - eje horizontal, 1 - eje vertical.

splitted

[out]  Array de submatrices obtenidas.

Valor retornado

Retorna true en el caso de éxito, de lo contrario, false.

Observación

Si se especifica el número de submatrices, se obtendrán submatrices del mismo tamaño. Es decir, el tamaño correspondiente de la matriz (0 - número de filas, 1 - número de columnas) deberá ser divisible por el número "parts" sin resto. Se pueden obtener matrices de diferentes tamaños utilizando un array de tamaños de submatrices. Los elementos del array de tamaños se utilizarán hasta dividir toda la matriz. Si el array de tamaños se ha agotado y la matriz aún no está completamente dividida, el resto sin dividir será la última submatriz.

Ejemplo:

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