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 1.4.7