wenjian=xlsread('wenjian.xlsx');
[m1,n1]=size(wenjian);
%初始中心点
a1=3;
a2=5;
b1=8;
b2=6;
d1=zeros(m1,1);
d2=zeros(m1,1);
biaozhun1=10;%初始运行条件
biaozhun2=10;
while biaozhun1>0.00000001 & biaozhun2>0.0000001%设置终止条件
for i=1:m1
d1(i)=sqrt((wenjian(i,1)-a1)^2+(wenjian(i,2)-a2)^2);
end
for i=1:m1
d2(i)=sqrt((wenjian(i,1)-b1)^2+(wenjian(i,2)-b2)^2);
end
%保存分类的数据
for i=1:m1
if d1(i)-d2(i)<=0
s1(i)=i;
else
s2(i)=i;
end
end
s1(s1==0)=[];
s2(s2==0)=[];
n1=length(s1);%计算新的聚类中心
n2=length(s2);
sum11=sum(wenjian(s1,1));
sum12=sum(wenjian(s1,2));
mean11=sum11/n1;
mean12=sum12/n1;
c1=[mean11,mean12];
sum21=sum(wenjian(s2,1));
sum22=sum(wenjian(s2,2));
mean21=sum21/n2;
mean22=sum22/n2;
c2=[mean21,mean22];
biaozhun1=sqrt((mean11-a1)^2+(mean12-a2)^2);
biaozhun2=sqrt((mean21-b1)^2+(mean22-b2)^2);
a1=mean11;%更新聚类中心点
a2=mean12;
b1=mean21;
b2=mean22;
end
center1=[a1,a2]
center2=[b1,b2]
x=wenjian(:,1);
y=wenjian(:,2);
plot(x,y,'o',a1,a2,'b*',b1,b2,'r*')
%小结 距离公式必须加上根号,否则偏差特别大
|