Vsplit
Vsplit
将矩阵垂直拆分为多个子矩阵。 axis=1 的拆分相同
bool matrix::Vsplit(
const ulong parts, // 子矩阵数
matrix& splitted[] // 结果子矩阵数组
);
void matrix::Vsplit(
const ulong& parts[], // 子矩阵大小
matrix& splitted[] // 结果子矩阵数组
);参数
- parts
[输入] 欲将矩阵划分为子矩阵的数量。
- splitted
[输出] 生成的子矩阵数组。
返回值
成功时返回 true,否则返回 false。
- 注意
如果指定了子矩阵的数量,则得到的子矩阵相同大小。 这意味着列数必须能被 “parts” 参数整除,没有余数。 也可按子矩阵尺寸数组得到 不同尺寸的子矩阵。 各尺寸数组的元素都可用,直到整个矩阵被分割。 如果数组尺寸分割结束,而矩阵尚有部分未除尽,则未分割的余数将作为最后一个子矩阵。
举例
matrix matrix_a={{ 1, 2, 3, 4, 5, 6},
{ 7, 8, 9,10,11,12},
{13,14,15,16,17,18}};
matrix splitted[];
ulong parts[]={2,3};
matrix_a.Vsplit(2,splitted);
for(uint i=0; i<splitted.Size(); i++)
Print("splitted ",i,"\n",splitted[i]);
matrix_a.Vsplit(3,splitted);
for(uint i=0; i<splitted.Size(); i++)
Print("splitted ",i,"\n",splitted[i]);
matrix_a.Vsplit(parts,splitted);
for(uint i=0; i<splitted.Size(); i++)
Print("splitted ",i,"\n",splitted[i]);
/*
splitted 0
[[1,2,3]
[7,8,9]
[13,14,15]]
splitted 1
[[4,5,6]
[10,11,12]
[16,17,18]]
splitted 0
[[1,2]
[7,8]
[13,14]]
splitted 1
[[3,4]
[9,10]
[15,16]]
splitted 2
[[5,6]
[11,12]
[17,18]]
splitted 0
[[1,2]
[7,8]
[13,14]]
splitted 1
[[3,4,5]
[9,10,11]
[15,16,17]]
splitted 2
[[6]
[12]
[18]]
*/