#include "stdio.h" #include "mex.h" #define MESSAGE_D_ERREUR "L'appel de la fonction se fait sous la forme : \n[ CorCoef ] = Correlation(signal_1, signal_2)" void mexFunction(int NbOut, struct mxArray_tag *PtOut[],int NbIn, const struct mxArray_tag *PtIn[]) { double *signal_1, *signal_2, *pt1, *pt2, *fin ; double CorCoef ; int NData ; switch(NbOut) { case 1 : break ; default : mexErrMsgTxt(MESSAGE_D_ERREUR) ; return ; break ; } switch(NbIn) { case 2 : break ; default : mexErrMsgTxt(MESSAGE_D_ERREUR) ; return ; break ; } NData = mxGetM(PtIn[0]) * mxGetN(PtIn[0]) ; if( mxGetM(PtIn[1]) * mxGetN(PtIn[1]) != NData ) { printf("Les deux signaux doivent avoir la meme dimension ([%d] est different de [%d])\n",mxGetM(PtIn[0])*mxGetN(PtIn[0]), mxGetM(PtIn[1])*mxGetN(PtIn[1])) ; mexErrMsgTxt(MESSAGE_D_ERREUR) ; return ; } signal_1 = (double *)mxCalloc(NData,sizeof(double)) ; if(signal_1==NULL) { printf("Probleme d'allocation pour %d doubles pour les variables reelles\n",NData) ; mexErrMsgTxt("Pas assez de memoire pour traiter de ce probleme\n") ; return ; } signal_2 = (double *)mxCalloc(NData,sizeof(double)) ; if(signal_2==NULL) { mxFree(signal_1) ; printf("Probleme d'allocation pour %d doubles pour les variables reelles\n",NData) ; mexErrMsgTxt("Pas assez de memoire pour traiter de ce probleme\n") ; return ; } pt1 = signal_1 ; pt2 = mxGetPr(PtIn[0]) ; ; fin = pt1 + NData ; while(pt1