root/library/bdm/mex/mex_pdf.h @ 1187

Revision 1083, 1.4 kB (checked in by smidl, 14 years ago)

Mergers + fixes

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