Hsplit

将矩阵水平拆分为多个子矩阵。 与 axis=0 的拆分相同

bool matrix::Hsplit(
  const ulong  parts,      // 子矩阵数
  matrix&      splitted[]  // 结果子矩阵数组
   );
 
void matrix::Hsplit(
  const ulong& parts[],    // 子矩阵大小
  matrix&      splitted[]  // 结果子矩阵数组
   );

参数

parts

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

splitted

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

返回值

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

注意

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

举例

   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,4};
 
   bool res=matrix_a.Hsplit(2,splitted);
   Print(res,"  ",GetLastError());
   ResetLastError();
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   res=matrix_a.Hsplit(5,splitted);
   Print(res,"  ",GetLastError());
   for(uint i=0i<splitted.Size(); i++)
      Print("splitted ",i,"\n",splitted[i]);
 
   res=matrix_a.Hsplit(parts,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,4,5,6]]
  splitted 1
  [[7,8,9,10,11,12]]
  splitted 2
  [[13,14,15,16,17,18]]
  splitted 3
  [[19,20,21,22,23,24]]
  splitted 4
  [[25,26,27,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]
  [25,26,27,28,29,30]]
  */