1 | | class mexEpdf: public epdf{ |
2 | | protected: |
3 | | mxArray *data; |
4 | | public: |
5 | | mexEpdf() {}; |
6 | | void from_setting(const Setting &S) { |
7 | | Setting &So=S["object"]; |
8 | | data = (mxArray*)long(So); |
9 | | } |
10 | | void set_data(mxArray * tmp){ |
11 | | data=tmp; |
12 | | } |
13 | | void validate() { |
14 | | mexCallMATLAB(0, 0, 1, &data, "validate"); |
15 | | mxArray *tmp; |
16 | | mexCallMATLAB(1, &tmp, 1, &data, "dimension"); |
17 | | dim = mxArray2double(tmp); |
18 | | mexCallMATLAB(1, &tmp, 1, &data, "get_rv"); |
19 | | UImxArray rvtmp(tmp); |
20 | | shared_ptr<RV> r=UI::build<RV>(rvtmp); |
21 | | if (r){ |
22 | | set_rv(*r); |
23 | | } |
24 | | } |
25 | | vec mean() const { |
26 | | mxArray *tmp; |
27 | | mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "mean"); |
28 | | return mxArray2vec(tmp); |
29 | | } |
30 | | vec sample() const { |
31 | | mxArray *tmp; |
32 | | mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "sample"); |
33 | | return mxArray2vec(tmp); |
34 | | } |
35 | | double evallog(const vec &dt) const { |
36 | | mxArray *tmp; |
37 | | mxArray *in[2]; |
38 | | in[0]=data; |
39 | | in[1]=mxCreateDoubleMatrix(dimension(),1,mxREAL); |
40 | | vec2mxArray(dt,in[1]); |
41 | | mexCallMATLAB(1, &tmp, 2, in, "evallog"); |
42 | | return mxArray2double(tmp); |
43 | | } |
44 | | vec variance() const { |
45 | | mxArray *tmp; |
46 | | mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "variance"); |
47 | | return mxArray2vec(tmp); |
48 | | } |
| 1 | class mexEpdf: public epdf { |
| 2 | protected: |
| 3 | mxArray *data; |
| 4 | public: |
| 5 | mexEpdf() {}; |
| 6 | void from_setting(const Setting &S) { |
| 7 | Setting &So=S["object"]; |
| 8 | data = (mxArray*)long(So); |
| 9 | } |
| 10 | void set_data(mxArray * tmp) { |
| 11 | data=tmp; |
| 12 | } |
| 13 | void validate() { |
| 14 | mexCallMATLAB(0, 0, 1, &data, "validate"); |
| 15 | mxArray *tmp; |
| 16 | mexCallMATLAB(1, &tmp, 1, &data, "dimension"); |
| 17 | dim = mxArray2double(tmp); |
| 18 | mexCallMATLAB(1, &tmp, 1, &data, "get_rv"); |
| 19 | UImxArray rvtmp(tmp); |
| 20 | shared_ptr<RV> r=UI::build<RV>(rvtmp); |
| 21 | if (r) { |
| 22 | set_rv(*r); |
| 23 | } |
| 24 | } |
| 25 | vec mean() const { |
| 26 | mxArray *tmp; |
| 27 | mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "mean"); |
| 28 | return mxArray2vec(tmp); |
| 29 | } |
| 30 | vec sample() const { |
| 31 | mxArray *tmp; |
| 32 | mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "sample"); |
| 33 | return mxArray2vec(tmp); |
| 34 | } |
| 35 | double evallog(const vec &dt) const { |
| 36 | mxArray *tmp; |
| 37 | mxArray *in[2]; |
| 38 | in[0]=data; |
| 39 | in[1]=mxCreateDoubleMatrix(dimension(),1,mxREAL); |
| 40 | vec2mxArray(dt,in[1]); |
| 41 | mexCallMATLAB(1, &tmp, 2, in, "evallog"); |
| 42 | return mxArray2double(tmp); |
| 43 | } |
| 44 | vec variance() const { |
| 45 | mxArray *tmp; |
| 46 | mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "variance"); |
| 47 | return mxArray2vec(tmp); |
| 48 | } |