Commit | Line | Data |
---|---|---|
7b272073 BA |
1 | #include "constructionModelesLassoRank.h" |
2 | #include "ioutils.h" | |
3 | ||
4 | int main(int argc, char** argv) | |
5 | { | |
6 | // read dimensions | |
7 | const Int nbDims = 5; | |
8 | Int* dimensions = readArray_int("dimensions",&nbDims,1); | |
9 | mwSize n = dimensions[0]; | |
10 | mwSize p = dimensions[1]; | |
11 | mwSize m = dimensions[2]; | |
12 | mwSize k = dimensions[3]; | |
13 | mwSize L = dimensions[4]; | |
14 | free(dimensions); | |
15 | mwSize lengthOne = 1; | |
16 | ||
17 | //////////// | |
18 | // INPUTS // | |
19 | //////////// | |
20 | ||
21 | // piInit | |
22 | const mwSize dimPi[] = {k, L}; | |
23 | Real* Pi = readArray_real("Pi",dimPi,2); | |
24 | ||
25 | // rhoInit | |
26 | const mwSize dimRho[] = {m, m, k, L}; | |
27 | Real* Rho = readArray_real("Rho",dimRho,4); | |
28 | ||
29 | // min number of iterations | |
30 | Int* pmini = readArray_int("mini",&lengthOne,1); | |
31 | Int mini = *pmini; | |
32 | free(pmini); | |
33 | ||
34 | // max number of iterations | |
35 | Int* pmaxi = readArray_int("maxi",&lengthOne,1); | |
36 | Int maxi = *pmaxi; | |
37 | free(pmaxi); | |
38 | ||
39 | // X | |
40 | const mwSize dimX[] = {n, p}; | |
41 | Real* X = readArray_real("X",dimX,2); | |
42 | ||
43 | // Y | |
44 | const mwSize dimY[] = {n, m}; | |
45 | Real* Y = readArray_real("Y",dimY,2); | |
46 | ||
47 | // tau | |
48 | Real* ptau = readArray_real("tau",&lengthOne,1); | |
49 | Real tau = *ptau; | |
50 | free(ptau); | |
51 | ||
52 | // A1 | |
53 | const mwSize dimA[] = {p, L}; | |
54 | Int* A1 = readArray_int("A1",dimA,2); | |
55 | ||
56 | // rangmin | |
57 | Int* prangmin = readArray_int("rangmin",&lengthOne,1); | |
58 | Int rangmin = *prangmin; | |
59 | free(prangmin); | |
60 | ||
61 | // rangmax | |
62 | Int* prangmax = readArray_int("rangmax",&lengthOne,1); | |
63 | Int rangmax = *prangmax; | |
64 | free(prangmax); | |
65 | ||
66 | ///////////// | |
67 | // OUTPUTS // | |
68 | ///////////// | |
69 | ||
70 | // phi | |
71 | mwSize Size = (mwSize)pow(rangmax-rangmin+1, k); | |
72 | const mwSize dimPhi[] = {p, m, k, L*Size}; | |
73 | Real* phi = (Real*)malloc(dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]*sizeof(Real)); | |
74 | ||
75 | // lvraisemblance | |
76 | const mwSize dimLvraisemblance[] = {L*Size, 2}; | |
77 | Real* lvraisemblance = (Real*)malloc(dimLvraisemblance[0]*dimLvraisemblance[1]*sizeof(Real)); | |
78 | ||
79 | ////////////////////////////////////////////// | |
80 | // Main call to constructionModelesLassoMLE // | |
81 | ////////////////////////////////////////////// | |
82 | ||
83 | constructionModelesLassoRank( | |
84 | Pi,Rho,mini,maxi,X,Y,tau,A1,rangmin,rangmax, | |
85 | phi,lvraisemblance, | |
86 | n,p,m,k,L); | |
87 | ||
88 | free(Rho); | |
89 | free(Pi); | |
90 | free(X); | |
91 | free(Y); | |
92 | free(A1); | |
93 | ||
94 | // Compare to reference outputs | |
95 | Real* ref_phi = readArray_real("phi",dimPhi, 4); | |
96 | compareArray_real("phi", phi, ref_phi, dimPhi[0]*dimPhi[1]*dimPhi[2]*dimPhi[3]); | |
97 | free(phi); | |
98 | free(ref_phi); | |
99 | ||
100 | // lvraisemblance | |
101 | Real* ref_lvraisemblance = readArray_real("lvraisemblance",dimLvraisemblance,2); | |
102 | compareArray_real("lvraisemblance", lvraisemblance, ref_lvraisemblance, dimLvraisemblance[0]*dimLvraisemblance[1]); | |
103 | free(lvraisemblance); | |
104 | free(ref_lvraisemblance); | |
105 | ||
106 | return 0; | |
107 | } |