00001 #include "stat/loggers.h"
00002
00003 namespace bdm{
00004 int mxReplaceFieldNM(mxArray *X,const char * fname,mxArray *X1)
00005 {
00006 mxArray *Old;
00007 int i;
00008
00009 if((i=mxGetFieldNumber(X,fname))==-1)
00010 {
00011 if((i=mxAddField(X,fname))==-1) return i;
00012
00013 }
00014
00015 Old=mxGetFieldByNumber(X,0,i);
00016 if(Old)mxDestroyArray(Old);
00017 mxSetFieldByNumber(X,0,i,X1);
00018 return i;
00019
00020 };
00021
00022 class mexlog : public memlog {
00023 public:
00025 mexlog(): memlog(0,"mx"){};
00027 mxArray* toCell(){
00028 mxArray* tmp = mxCreateStructMatrix(1,1,0,NULL);
00029
00030
00031 int i;
00032 string vec_name="";
00033 int istart, iend;
00034
00035 mat M;
00036 for ( i=0; i<entries.length();i++ ) {
00037 istart=0;
00038 for (int j=0; j<entries(i).length(); j++){
00039 vec_name = names(i) + entries(i).name(j);
00040 iend=istart+entries(i).size(j)-1;
00041 M=vectors(i).get_cols(istart,iend);
00042 istart=iend+1;
00043
00044 mxArray* fld=mxCreateDoubleMatrix(M.rows(), M.cols(), mxREAL);
00045 mat2mxArray(M,fld);
00046 mxReplaceFieldNM(tmp, vec_name.c_str(), fld);
00047 }
00048 }
00049 return tmp;
00050 }
00051 void from_setting (const Setting &root){
00052 maxlen=root["maxlen"];
00053 }
00054 };
00055 UIREGISTER(mexlog);
00056 }