mixpp: mex_pdf.h Source File

mex_pdf.h

00001 using namespace bdm;
00002
00003 class mexEpdf: public epdf {
00004 protected:
00005     mxArray *data;
00006 public:
00007     mexEpdf() {};
00008     void from_setting(const Setting &S)  {
00009         Setting &So=S["object"];
00010         data = (mxArray*)long(So);
00011     }
00012     void set_data(mxArray * tmp) {
00013         data=tmp;
00014     }
00015     void validate() {
00016         mexCallMATLAB(0, 0, 1, &data,  "validate");
00017         mxArray *tmp;
00018         mexCallMATLAB(1, &tmp, 1, &data, "dimension");
00019         dim = mxArray2double(tmp);
00020         mexCallMATLAB(1, &tmp, 1, &data, "get_rv");
00021         UImxArray rvtmp(tmp);
00022         shared_ptr<RV> r=UI::build<RV>(rvtmp);
00023         if (r) {
00024             set_rv(*r);
00025         }
00026     }
00027     vec mean() const {
00028         mxArray *tmp;
00029         mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "mean");
00030         return mxArray2vec(tmp);
00031     }
00032     vec sample() const {
00033         mxArray *tmp;
00034         mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "sample");
00035         return mxArray2vec(tmp);
00036     }
00037     double evallog(const vec &dt) const {
00038         mxArray *tmp;
00039         mxArray *in[2];
00040         in[0]=data;
00041         in[1]=mxCreateDoubleMatrix(dimension(),1,mxREAL);
00042         vec2mxArray(dt,in[1]);
00043         mexCallMATLAB(1, &tmp, 2, in, "evallog");
00044         return mxArray2double(tmp);
00045     }
00046     vec variance() const {
00047         mxArray *tmp;
00048         mexCallMATLAB(1, &tmp, 1, (mxArray **) &data, "variance");
00049         return mxArray2vec(tmp);
00050     }
00051 };
00052 UIREGISTER(mexEpdf);
00053

Generated on 2 Dec 2013 for mixpp by  doxygen 1.4.7