Split

Divisão de uma matriz em várias submatrices.

bool matrix::Split(
  const ulong  parts,      // número de submatrizes
  const int    axis,       // eixo
  matrix&      splitted[]  // matrizes das submatrizes obtidas
   );
 
void matrix::Split(
  const ulong& parts[],    // tamanhos das submatrizes
  const int    axis,       // eixo
  matrix&      splitted[]  // matrizes das submatrizes obtidas
   );

Parâmetros

parts

[in]  Número de submatrices para divisão da matriz.

axis

[in]  Eixo. 0 – eixo horizontal, 1 – eixo vertical.

splitted

[out]  Matriz de submatrices recebidas.

Valor retornado

Retorna true se bem-sucedido, caso contrário, false.

Observação

Se o número de submatrizes for especificado, serão obtidas submatrizes do mesmo tamanho. Em outras palavras, o tamanho da matriz (0 - número de linhas, 1 - número de colunas) deve ser divisível pelo número parts sem resto. Submatrizes de diferentes tamanhos podem ser obtidas usando uma matriz de tamanhos de submatrizes. Os elementos da matriz de tamanho são usados até que toda a matriz seja dividida. Se a matriz foi completamente dividida e o tamanho restante não for suficiente para formar uma submatriz completa, o restante não dividido será a última submatriz.

Exemplo:

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