Split
Chia một ma trận thành nhiều ma trận con.
cpp
bool matrix::Split(
const ulong parts, // số lượng ma trận con
const int axis, // trục
matrix& splitted[] // mảng các ma trận con kết quả
);
void matrix::Split(
const ulong& parts[], // kích thước của các ma trận con
const int axis, // trục
matrix& splitted[] // mảng các ma trận con kết quả
);
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Tham số
parts
[in] Số lượng ma trận con mà ma trận sẽ được chia thành.
axis
[in] Trục. 0 - trục ngang, 1 - trục dọc.
splitted
[out] Mảng các ma trận con kết quả.
Giá trị trả về
Trả về true
nếu thành công, false
nếu không.
Ghi chú
Nếu số lượng ma trận con được chỉ định, thì các ma trận con có kích thước bằng nhau sẽ được tạo ra. Điều này có nghĩa là kích thước ma trận (0 - số hàng, 1 - số cột) phải chia hết cho parts
mà không có dư. Các ma trận con có kích thước khác nhau có thể được tạo bằng cách sử dụng mảng kích thước ma trận con. Các phần tử của mảng kích thước được sử dụng cho đến khi toàn bộ ma trận được chia. Nếu mảng kích thước kết thúc mà ma trận chưa được chia hết, phần còn lại chưa chia sẽ là ma trận con cuối cùng.
Ví dụ
cpp
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]]
*/
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49