clc clear close all 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=100;% 生成多少个数据 Dim=5; 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); data=load('data'); data=data.data; SetS=[1;]; for clusterI=1:clusterN-1 maxG=-100*ones(dataN,1); for cluster=1:dataN if sum(ismember(cluster,SetS))>0 continue end %选一个候选数据 cddtI=cluster; cadSetS=[SetS;cddtI;]; Cij=0; for J=1:dataN if sum(ismember(J,cadSetS))>0 continue 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 distance1e-5 || abs(smin2D-min2D)>1e-5 fdf=0; end % minD=sminD; % minD % sminD % min2D=smin2D; % 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 if abs(distanceIJ-minD)<1e-5 Kjih=min([distanceHJ,min2D])-minD; elseif distanceIJ