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

Revision 955, 1.2 kB (checked in by smidl, 14 years ago)

misssing_file

Line 
1class 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                }
49};
50UIREGISTER(mexEpdf);
Note: See TracBrowser for help on using the browser.