parent
3cb6bfe094
commit
193f02f4d7
|
|
@ -1 +1,3 @@
|
|||
*.asv
|
||||
*.asv
|
||||
*.mexw32
|
||||
*.mat
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
#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;
|
||||
}
|
||||
|
||||
5
main.m
5
main.m
|
|
@ -44,6 +44,7 @@ for clusterI=1:clusterN-1
|
|||
|
||||
% distanceIJ=sum((d-data(:,cddtI)).^2).^.5;
|
||||
distanceIJ=metricFun( d,data(:,cddtI) );
|
||||
% distanceIJ_t=UserSum(d,data(:,cddtI));
|
||||
Cij=Cij+max([minD-distanceIJ,0]);
|
||||
end
|
||||
maxG(cluster)=Cij;
|
||||
|
|
@ -73,13 +74,15 @@ while 1
|
|||
if J==cadSetS(I)
|
||||
continue
|
||||
end
|
||||
|
||||
matDistance=repmat(d,1,length(SetS));
|
||||
minD=matDistance-data(:,SetS);
|
||||
minD=diag(minD'*minD).^.5;
|
||||
minD_t=min(minD);
|
||||
minD(minD==minD_t)=1e20;
|
||||
min2D=min(minD);
|
||||
minD=minD_t;
|
||||
minD=minD_t;
|
||||
|
||||
% distanceIJ=sum((d-data(:,cadUSetS(H))).^2).^.5;%S(I)ÒѾµÈÓÚU(H)
|
||||
distanceIJ=metricFun( d,data(:,cadUSetS(H)) );
|
||||
% distanceHJ=sum((d-data(:,cadSetS(I))).^2).^.5;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
function [ output_args ] = metricFun( a,b )
|
||||
output_args=sum((a-b).^2).^.5;
|
||||
% output_args=sum((a-b).^2).^.5;
|
||||
% output_args=(a-b)'*(a-b);
|
||||
% output_args=sum(abs(a-b));
|
||||
output_args=UserSum(a,b);
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue