Split

행렬을 여러 부분 행렬로 분할합니다.

bool matrix::Split(
  const ulong  parts,      // 부분 행렬의 수
  const int    axis,       // axis
  matrix&      splitted[]  // 결과 부분 행렬의 배열
   );
 
void matrix::Split(
  const ulong& parts[],    부분 행렬의 크기
  const int    axis,       // axis
  matrix&      splitted[]  // 결과 부분 행렬의 배열
   );

매개 변수

parts

【in】 행렬을 나눌 부분 행렬의 수입니다.

axis

[in]  Axis. 0 - 수평 축, 1 - 수직 축.

splitted

【out】 결과 부분 행렬의 배열입니다.

반환값

성공하면 true를 반환하고 그렇지 않으면 false를 반환.

참조

부분 행렬의 수가 지정되면 동일한 크기의 부분 행렬을 얻습니다. 즉, 행렬 크기(0 - 행 수, 1 - 열 수)는 나머지 없이 '부분'으로 나눌 수 있어야 합니다. 다양한 크기의 부분 행렬은 부분 행렬 크기의 배열을 사용하여 얻을 수 있습니다. 크기 배열의 요소는 전체 행렬이 분할될 때까지 사용됩니다. 크기 배열이 종료되고 행렬이 아직 완전히 분할되지 않은 경우 분할되지 않은 나머지가 마지막 부분 행렬이 됩니다.

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