pam/main.m

51 lines
1.2 KiB
Mathematica
Raw Normal View History

clc
clear
close all
%<EFBFBD><EFBFBD><EFBFBD>γɳ<EFBFBD>ʼ<EFBFBD><EFBFBD>
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=50;% <EFBFBD><EFBFBD><EFBFBD>ɶ<EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Dim=1;
data=zeros(Dim,dataN);
for I=1:dataN
i=round(1+(4-1)*rand());
data(:,I)=center(i)*( -1+(1+1)*rand(Dim,1));
end
SetS=[1;];
for clusterI=1:3
maxG=-100*ones(dataN,1);
for cluster=1:dataN
if sum(ismember(cluster,SetS))>0
continue
end
%ѡһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cddtI=cluster;
cadSetS=[SetS;cddtI;];
Cij=0;
for J=1:dataN
if sum(ismember(J,cadSetS))>0
continue
end
d=data(:,J);
%Ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>
minD=1e20;
for D=1:length(SetS)%between j and the closest object in S.
% if J==cadSetS(D)
% continue
% end
distance=sum((d-data(:,SetS(D))).^2).^.5;
if distance<minD
minD=distance;
end
end
distanceIJ=sum((d-data(:,cddtI)).^2).^.5;
Cij=Cij+max([minD-distanceIJ,0]);
end
maxG(cluster)=Cij;
end
maxGInd=find(maxG==max(maxG));
SetS=[SetS;maxGInd(1)];
end