pam/UserSum.c

63 lines
1.1 KiB
C

#include "mex.h"
#include "math.h"
typedef unsigned int size_t;
void mexFunction(int nlhs, mxArray* plhs[],int nrhs, const mxArray* prhs[])
{
size_t Alen=0;
size_t Blen=0;
size_t i=0;
double *dataA=NULL;
double *dataB=NULL;
double sum=0;
mxArray *pSum=NULL;
if(nrhs<2)
{
mexPrintf("parameters are fewer than 2\n");
plhs=NULL;
nlhs=0;
return;
}
Alen=length(prhs[0]);
Blen=length(prhs[1]);
if(Alen!=Blen)
{
mexPrintf("dim of para inconsists.\n");
return;
}
// mexPrintf("A %d B %d\n",Alen,Blen);
dataA=mxGetPr(prhs[0]);
dataB=mxGetPr(prhs[1]);
// mexPrintf("%f\n",dataA[0]);
for(i=0;i<Alen;i++)
{
sum+=pow(dataA[i]-dataB[i],2);
}
sum=sqrt(sum);
pSum=mxCreateScalarDouble(sum);
if(nlhs>0)
{
plhs[0]=pSum;
}
else
{
mexPrintf("must have at least one out para.\n");
return;
}
}
size_t length(const mxArray* p)
{
size_t m=0;
size_t n=0;
m=mxGetM(p);
n=mxGetN(p);
if(m>n)
{
return m;
}
return n;
}