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