📄 caverage.asv
字号:
clear;clc;
x=[0,3,2,1,5,4,6,5,6,7];y=[0,8,2,1,3,8,3,4,4,5];X=x+j*y;
len=length(X);
flag=zeros(1,len);
disp('请输入类别数:'); C=input('C='); % 聚类中心数
% 确定聚类中心
cen=zeros(1,2*C);
len=zeros(1,C);
cen(1)=x(1);cen(2)=y(1); %设定第一个聚类中心
for k = 2:1:C
maxd = zeros(1,len);
% 求每个特征点与前k-1个聚类中心的距离之和
for i=1:1:len
for t=1:1:k-1
d = (x(i)-cen(2*t-1)).^2+(y(i)-cen(2*t)).^2;
len(t)=d;
end
end
d=find(maxd==max(maxd)); % 第k个聚类中心是与前k-1个聚类中心相距最远的特征点
cen(2*k-1) = x(d(1));cen(2*k)=y(d(1));
end
%聚类,更新聚类中心
mind=zeros(1,C);
for i=1:1:len
for k=1:2:2*C
d1=(x(i)-cen(k)).^2+(y(i)-cen(k+1)).^2;
mind((k+1)/2)=mind((k+1)/2)+d1;
end
D=find(mind==min(mind));
K=D(1)*2-1;flag(i)=D(1);
cen(K)=(cen(K)+x(i))/2;cen(K+1)=(cen(K+1)+y(i))/2;
mind=zeros(1,C);
end
plot(X(flag==1),'x'),axis([0,10,0,10]);
hold on;
plot(X(flag==2),'d');
plot(X(flag==3),'s');
plot(X(flag==4),'v');
plot(X(flag==5),'h');
plot(X(flag==6),'o');
plot(X(flag==7),'>');
plot(X(flag==8),'+');
plot(X(flag==9),'<');
plot(X(flag==10),'.');
grid on;
hold off;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -