arx.cpp itpp/itcomm.h itpp/itmex.h ../../bdm/estim/arx.h void void mexFunction (int n_output, mxArray *output[], int n_input, const mxArray *input[]) mexFunction int n_output mxArray * output [] int n_input const mxArray * input [] #include<itpp/itcomm.h> #include<itpp/itmex.h> #include"../../bdm/estim/arx.h" usingnamespaceitpp; voidmexFunction(intn_output,mxArray*output[],intn_input,constmxArray*input[]){ //Checkthenumberofinputsandoutputarguments if(n_output<1)mexErrMsgTxt("Wrongnumberofoutputvariables!"); if(n_input!=1)mexErrMsgTxt("Wrongnumberofinputvariables!"); //ConvertinputvariablestoIT++format matData=mxArray2mat(input[0]); //------------------Startofroutine--------------------------- intndat=Data.cols(); intnpsi=Data.rows(); RVthr("1","{theta_r}",vec_1(npsi),vec_1(0)); matV0=1e-8*eye(npsi);V0(0,0)*=100.0; doublenu0=npsi; ARXAr(thr,V0,nu0); //estimate for(inti=0;i<ndat;i++){Ar.bayes(Data.get_col(i));} vecth=Ar._epdf().mean(); //------------------Endofroutine----------------------------- //Createoutputvectors output[0]=mxCreateDoubleMatrix(1,th.length(),mxREAL); //ConverttheIT++formattoMatlabformatforoutput vec2mxArray(th,output[0]); if(n_output>1){ doublell=Ar._tll(); output[1]=mxCreateDoubleMatrix(1,1,mxREAL); double2mxArray(ll,output[1]); } if(n_output>2){ ivecstr=Ar.structure_est(egiw(thr,V0,nu0)); output[2]=mxCreateDoubleMatrix(1,str.length(),mxREAL); ivec2mxArray(str,output[2]); } }