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

Revision 1064, 2.2 kB (checked in by mido, 14 years ago)

astyle applied all over the library

  • Property svn:eol-style set to native
Line 
1#include <mex/mex_parser.h>
2#include <mex/mex_pdf.h>
3class mexBM: public BM {
4protected:
5    mxArray *data;
6    mexEpdf est;
7public:
8    mexBM() {};
9    void from_setting(const Setting &S)  {
10        Setting &So=S["object"];
11        data = (mxArray*)long(So);
12    }
13    void validate() {
14        mxArray *tmp;
15        mexCallMATLAB(1, &tmp, 1, &data,  "validate");
16        // new object is in tmp
17        data = tmp;
18
19        mexCallMATLAB(1, &tmp, 1, &data, "dimensions");
20        vec v=mxArray2vec(tmp);
21        if (v.length()<3) {
22            bdm_error("Three dimensions are expected in mexBM.dimensions");
23        }
24        set_dim(v(0));
25        dimy = v(1);
26        dimc = v(2);
27
28        mexCallMATLAB(1, &tmp, 1, &data, "get_rv");
29        UImxArray rvtmp(tmp);
30        shared_ptr<RV> r = UI::build<RV>(rvtmp);
31        set_rv(*r);
32
33        mexCallMATLAB(1, &tmp, 1, &data, "get_rvc");
34        UImxArray rvtmpc(tmp);
35        shared_ptr<RV> rc = UI::build<RV>(rvtmpc);
36        rvtmpc.writeFile("tmpc.cfg");
37        rvc=*rc;
38
39        mexCallMATLAB(1, &tmp, 1, &data, "get_rvy");
40        UImxArray rvtmpy(tmp);
41        rvtmpy.writeFile("tmpy.cfg");
42        shared_ptr<RV> ry = UI::build<RV>(rvtmpy);
43        yrv = *ry;
44
45    }
46    void bayes(const vec &dt, const vec &cond) {
47        mxArray *tmp;
48        mxArray *in[3];
49        in[0]=data;
50        in[1]=mxCreateDoubleMatrix(dt.length(),1,mxREAL);
51        vec2mxArray(dt,in[1]);
52        in[2]=mxCreateDoubleMatrix(cond.length(),1,mxREAL);
53        vec2mxArray(cond,in[2]);
54
55        mexCallMATLAB(1, &tmp, 3, in, "bayes");
56        data = tmp;
57    }
58    epdf* predictor(const vec &cond) const {
59        mxArray *tmp;
60        mxArray *in[3];
61        in[0]=data;
62        in[1]=mxCreateDoubleMatrix(cond.length(),1,mxREAL);
63        vec2mxArray(cond,in[1]);
64
65        mexCallMATLAB(1, &tmp, 3, in, "predictor");
66
67        UImxArray uitmp(tmp);
68        shared_ptr<epdf> pred = UI::build<epdf>(uitmp);
69        return pred.get();
70        //
71    }
72    const epdf& posterior() const {
73        mxArray *tmp;
74        mexCallMATLAB(1, &tmp, 1,(mxArray **) &data,  "posterior");
75        const_cast<mexEpdf*>(&est)->set_data(tmp);
76        return est;
77    }
78};
79UIREGISTER(mexBM);
Note: See TracBrowser for help on using the browser.