没有时间详细写了,直接贴代码吧。
%%%%%函数
function [index]=zzhKmean(x,num)
nData=size(x,1);
index=zeros(1,nData);
center=zeros(num,2);
for n=1:nData
index(n)=ceil(num*rand(1));
end
jud=1;
while jud==1
jud=0;
for n=1:num
center(n,1)=mean(x(find(index==n),1));
center(n,2)=mean(x(find(index==n),2));
end
for n=1:nData
ind=index(n);
dist=zeros(1,num);
Xn=x(n,:);
for m=1:num
dist(m)=norm(Xn-center(m,:));
end
indShould=find(dist==min(dist));
if indShould~=ind
jud=1;
index(n)=indShould;
end
end
end
%%%%%%%%%%%
%%%%%%%主程序,令k=3
x=rand(50,2);