-
Notifications
You must be signed in to change notification settings - Fork 2
/
nDimensionalArray.cpp
95 lines (77 loc) · 2.63 KB
/
nDimensionalArray.cpp
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <matio.h>
int main() {
mat_t *matfp = NULL;
const char *FILENAME = "export.mat";
//Open file
matfp = Mat_CreateVer(FILENAME, NULL, MAT_FT_MAT5);
//#################################################
//#########
// 1d array
const int first = 3; //rows
int array1d[first]= { 0 };
// fill 1d array
for (int i = 0; i < first; i++)
array1d[i] = (i + 1);
// write
char* fieldname1d = "array1d";
size_t dim1d[1] = { first };
matvar_t *variable1d = Mat_VarCreate(fieldname1d, MAT_C_INT32, MAT_T_INT32, 1, dim1d, &array1d, 0); //rank 1
Mat_VarWrite(matfp, variable1d, MAT_COMPRESSION_NONE);
Mat_VarFree(variable1d);
//#########
// 2d array
const int second = 4; //columns
int array2d[first][second] = { 0 };
// fill 2d array
for (int i = 0; i < first; i++)
for (int j = 0; j < second; j++)
array2d[i][j] = (i + 1) * (j + 1);
// write
char* fieldname2d = "array2d";
size_t dim2d[2] = { first, second };
matvar_t *variable2d = Mat_VarCreate(fieldname2d, MAT_C_INT32, MAT_T_INT32, 2, dim2d, &array2d, 0); //rank 2
Mat_VarWrite(matfp, variable2d, MAT_COMPRESSION_NONE);
Mat_VarFree(variable2d);
//#########
// 3d array
const int third = 5;
int array3d[first][second][third] = { 0 };
// fill 3d array
for (int i = 0; i < first; i++)
for (int j = 0; j < second; j++)
for (int k = 0; k < third; k++)
array3d[i][j][k] = (i + 1) * (j + 1) * (k + 1);
// write
char* fieldname3d = "array3d";
size_t dim3d[3] = { first, second, third };
matvar_t *variable3d = Mat_VarCreate(fieldname3d, MAT_C_INT32, MAT_T_INT32, 3, dim3d, &array3d, 0); //rank 3
Mat_VarWrite(matfp, variable3d, MAT_COMPRESSION_NONE);
Mat_VarFree(variable3d);
//#########
// 4d array
const int fourth = 6;
int array4d[first][second][third][fourth] = { 0 };
// fill 4d array
for (int i = 0; i < first; i++)
for (int j = 0; j < second; j++)
for (int k = 0; k < third; k++)
for (int l = 0; l < fourth; l++)
array4d[i][j][k][l] = (i + 1) * (j + 1) * (k + 1) * (l + 1);
// write
char* fieldname4d = "array4d";
size_t dim4d[4] = { first, second, third, fourth };
matvar_t *variable4d = Mat_VarCreate(fieldname4d, MAT_C_INT32, MAT_T_INT32, 4, dim4d, &array4d, 0); //rank 4
Mat_VarWrite(matfp, variable4d, MAT_COMPRESSION_NONE);
Mat_VarFree(variable4d);
//for N dimensional array create:
//int arrayNd
//create:
//size_t dimNd[N] = {...};
//and select rank N in Mat_VarCreate: | |
//Mat_VarCreate(fieldnameNd, MAT_C_INT32, MAT_T_INT32, N, dimNd, &arrayNd, 0);
// | |
//#################################################
//Close file
Mat_Close(matfp);
return 0;
}