| 10 |  |         /*! class mapping fnc.eval to call of matlab function via mexCallMatlab | 
                        | 11 |  |         */ | 
                        | 12 |  |         class mexFnc: public fnc{ | 
                        | 13 |  |                 protected: | 
                        | 14 |  |                 string fname; | 
                        | 15 |  |                 public: | 
                        | 16 |  |                         vec eval(const vec &cond){ | 
                        | 17 |  |                                 mxArray *mxinp = mxCreateDoubleMatrix ( cond.length(), 1, mxREAL ); | 
                        | 18 |  |                                 mxArray *mxout; | 
                        | 19 |  |  | 
                        | 20 |  |                                 vec2mxArray(cond,mxinp); | 
                        | 21 |  |                                 mexCallMATLAB ( 1, &mxout, 1, &mxinp, fname.c_str() ); | 
                        | 22 |  |  | 
                        | 23 |  |                                 bdm_assert(int(mxGetN(mxout))==(dimension()) || int(mxGetM(mxout))==(dimension()), "vector length mismatch"); | 
                        | 24 |  |                                 vec tmp=mxArray2vec(mxout); | 
                        | 25 |  |                                 return tmp; | 
                        | 26 |  |                         } | 
                        | 27 |  | /*! | 
                        | 28 |  |                         \code | 
                        | 29 |  |                         function = 'matlab_function_name'; | 
                        | 30 |  |                         \endcode | 
                        | 31 |  |                         */ | 
                        | 32 |  |                         void from_setting(const Setting &set){ | 
                        | 33 |  |                                 fnc::from_setting(set); | 
                        | 34 |  |                                 UI::get(fname, set, "function", UI::compulsory); | 
                        | 35 |  |                         } | 
                        | 36 |  |                         void to_setting(Setting &set) const { | 
                        | 37 |  |                                 fnc::to_setting(set); | 
                        | 38 |  |                                 UI::save(fname, set, "function"); | 
                        | 39 |  |                         } | 
                        | 40 |  |         }; | 
                        | 41 |  |         UIREGISTER(mexFnc); | 
                      
                        |  | 10 | /*! class mapping fnc.eval to call of matlab function via mexCallMatlab | 
                        |  | 11 | */ | 
                        |  | 12 | class mexFnc: public fnc { | 
                        |  | 13 | protected: | 
                        |  | 14 | string fname; | 
                        |  | 15 | public: | 
                        |  | 16 | vec eval(const vec &cond) { | 
                        |  | 17 | mxArray *mxinp = mxCreateDoubleMatrix ( cond.length(), 1, mxREAL ); | 
                        |  | 18 | mxArray *mxout; | 
                        |  | 19 |  | 
                        |  | 20 | vec2mxArray(cond,mxinp); | 
                        |  | 21 | mexCallMATLAB ( 1, &mxout, 1, &mxinp, fname.c_str() ); | 
                        |  | 22 |  | 
                        |  | 23 | bdm_assert(int(mxGetN(mxout))==(dimension()) || int(mxGetM(mxout))==(dimension()), "vector length mismatch"); | 
                        |  | 24 | vec tmp=mxArray2vec(mxout); | 
                        |  | 25 | return tmp; | 
                        |  | 26 | } | 
                        |  | 27 | /*! | 
                        |  | 28 | \code | 
                        |  | 29 | function = 'matlab_function_name'; | 
                        |  | 30 | \endcode | 
                        |  | 31 | */ | 
                        |  | 32 | void from_setting(const Setting &set) { | 
                        |  | 33 | fnc::from_setting(set); | 
                        |  | 34 | UI::get(fname, set, "function", UI::compulsory); | 
                        |  | 35 | } | 
                        |  | 36 | void to_setting(Setting &set) const { | 
                        |  | 37 | fnc::to_setting(set); | 
                        |  | 38 | UI::save(fname, set, "function"); | 
                        |  | 39 | } | 
                        |  | 40 | }; | 
                        |  | 41 | UIREGISTER(mexFnc); |