Split

将矩阵拆分为多个子矩阵。

bool matrix::Split(

  const ulong  parts,      // 子矩阵数

  const int    axis,       // 轴

  matrix&      splitted[]  // 结果子矩阵数组

   );



void matrix::Split(

  const ulong& parts[],    // 子矩阵大小

  const int    axis,       // 轴

  matrix&      splitted[]  // 结果子矩阵数组

   );

参数

parts

[输入] 欲将矩阵划分为子矩阵的数量。

axis

[输入]  轴。 0 - 水平轴,1 - 垂直轴。

splitted

[输出] 生成的子矩阵数组。

返回值

成功时返回 true,否则返回 false。

注意

如果指定了子矩阵的数量,则得到的子矩阵相同大小。 这意味着矩阵大小(0 - 行数,1 - 列数)必须能被 “parts” 参数整除,没有余数。 也可按子矩阵尺寸数组得到 不同尺寸的子矩阵。 各尺寸数组的元素都可用,直到整个矩阵被分割。 如果数组尺寸分割结束,而矩阵尚有部分未除尽,则未分割的余数将作为最后一个子矩阵。

举例

   matrix matrix_a={{ 1, 2, 3, 4, 5, 6},

                    { 7, 8, 9,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=0; i<splitted.Size(); i++)

      Print("splitted ",i,"\n",splitted[i]);



   res=matrix_a.Split(2,1,splitted);

   Print(res,"  ",GetLastError());

   for(uint i=0; i<splitted.Size(); i++)

      Print("splitted ",i,"\n",splitted[i]);



   res=matrix_a.Split(parts,0,splitted);

   Print(res,"  ",GetLastError());

   for(uint i=0; i<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]]

  */