矢量化算到S集合的最短距离。

Signed-off-by: facat@lab.com <facat@lab.com>
This commit is contained in:
facat@lab.com 2014-12-08 11:44:43 +08:00
parent d45c8c4eab
commit 3cb6bfe094
1 changed files with 8 additions and 44 deletions

52
main.m
View File

@ -37,15 +37,6 @@ for clusterI=1:clusterN-1
end
d=data(:,J);
%ѰÕÒ×î̾àÀë
minD=1e20;
% for D=1:length(SetS)%between j and the closest object in S.
% % distance=sum((d-data(:,SetS(D))).^2).^.5;
% distance=metricFun( d,data(:,SetS(D)) );
% if distance<minD
% minD=distance;
% end
% end
matDistance=repmat(d,1,length(SetS));
minD=matDistance-data(:,SetS);
minD=diag(minD'*minD);
@ -82,40 +73,13 @@ while 1
if J==cadSetS(I)
continue
end
minD=1e20;
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
min2D=minD;
minD=distance;
else
if distance<min2D
min2D=distance;
end
end
end
smatDistance=repmat(d,1,length(SetS));
sminD=smatDistance-data(:,SetS);
sminD=diag(sminD'*sminD).^.5;
tsminD=sminD;
sminD_t=min(sminD);
sminD(sminD==sminD_t)=1e20;
smin2D=min(sminD);
sminD=sminD_t;
if abs(sminD-minD)>1e-5 || abs(smin2D-min2D)>1e-5
fdf=0;
end
% minD=sminD;
% minD
% sminD
% min2D=smin2D;
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;
% 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;
@ -125,7 +89,7 @@ while 1
end
if abs(distanceIJ-minD)<1e-5
Kjih=min([distanceHJ,min2D])-minD;
elseif distanceIJ<sminD
elseif distanceIJ<minD
fprintf('Input must be a string\n')
end