pam/main.m

36 lines
712 B
Matlab

clc
clear
close all
%先形成初始点
center=[1,1,1,1,1;10,10,10,10,10;100,100,100,100,100;1000,1000,1000,1000,1000];
dataN=100;% 生成多少个数据
data=zeros(5,dataN);
for I=1:dataN
i=round(1+(5-1)*rand());
data(:,I)=center(i)*( -1+(1+1)*rand(5,1));
end
%选一个候选数据
cddtI=10;
SetS=[];
SetS=[SetS;cddtI;];
Cij=0;
for I=1:dataN
if I==cddtI
continue
end
d=data(:,I);
%寻找最短距离
minD=1e20;
for J=1:length(SetS)
if I==SetS(J)
continue
end
distance=sum((d-data(:,SetS(J))).^2).^.5;
if distance<minD
minD=distance;
end
end
distanceIJ=sum((d-data(:,cddtI)).^2).^.5;
Cij=Cij+max([minD-distanceIJ,0])
end