通过评价函数来测距离

Signed-off-by: facat@lab.com <facat@lab.com>
This commit is contained in:
facat@lab.com 2014-12-08 10:23:13 +08:00
parent 86fd99706a
commit 91ece41bae
2 changed files with 19 additions and 10 deletions

25
main.m
View File

@ -5,15 +5,15 @@ tic
%ÏÈÐγɳõʼµã
center=[1,1,1,1,1;10,10,10,10,10;100,100,100,100,100;1000,1000,1000,1000,1000];
% center=[1;10;100;1000];
dataN=50000;%
dataN=100;%
Dim=5;
clusterN=100;
data=zeros(Dim,dataN);
% data=[11,101,1001,1,2,3];
for I=1:dataN
i=round(1+(4-1)*rand());
data(:,I)=center(i)*( -1+(1+1)*rand(Dim,1));
end
clusterN=10;
% data=zeros(Dim,dataN);
% % data=[11,101,1001,1,2,3];
% for I=1:dataN
% i=round(1+(4-1)*rand());
% data(:,I)=center(i)*( -1+(1+1)*rand(Dim,1));
% end
data=rand(Dim,dataN);
@ -42,11 +42,13 @@ for clusterI=1:clusterN-1
% continue
% end
distance=sum((d-data(:,SetS(D))).^2).^.5;
% distance=metricFun( d,data(:,SetS(D)) );
if distance<minD
minD=distance;
end
end
distanceIJ=sum((d-data(:,cddtI)).^2).^.5;
% distanceIJ=metricFun( d,data(:,cddtI) );
Cij=Cij+max([minD-distanceIJ,0]);
end
maxG(cluster)=Cij;
@ -80,6 +82,7 @@ while 1
min2D=minD;
for G=1:length(SetS)%between j and the closest object in S.
distance=sum((d-data(:,SetS(G))).^2).^.5;
% distance=metricFun( d,data(:,SetS(G)) );
if distance<minD
minD=distance;
else
@ -89,8 +92,10 @@ while 1
end
end
distanceIJ=sum((d-data(:,cadUSetS(H))).^2).^.5;%S(I)U(H)
distanceHJ=sum((d-data(:,cadSetS(I))).^2).^.5;
% 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;
distanceHJ=metricFun( d,data(:,cadSetS(I)) );
if distanceIJ>minD
Kjih=min([distanceHJ-minD,0]);
end

4
metricFun.m Normal file
View File

@ -0,0 +1,4 @@
function [ output_args ] = metricFun( a,b )
output_args=sum((a-b).^2).^.5;
end