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