%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%FCM算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X={0.0000 0.0025 0.0625 0.2500 0.25
0.0025 0 0.04 0.0625 0.2025
0.0625 0.04 0 0.0025 0.0625
0.25 0.0625 0.0025 0 0.04
0.25 0.2025 0.0625 0.04 0};
n=5;
c=input('设置聚类组数c:\n');%设置聚类组数c
m=input('设置聚类处理模糊性控制参数m:\n');%输入控制聚类处理模糊性的权指数参数m
Tmax=input('设置最大迭代次数Tmax:\n');%输入最大迭代次数
U=rand(c,n);%隶属度矩阵U的随机初始化
V=[];%中心向量初始化
D=zeros(c,n);%距离函数初始化
J=0;%目标函数初始化
%迭代
for t=1:Tmax
%计算中心向量V
for i=1:c
E=0;
F=0;
for j=1:n
a=U(i,j);
b=X(:,j);
e=a^2*b;
f=(U(i,j))^2;
E=E+e;
F=F+f;
end
V(:,i)=E/F;
end
%D的计算
for p=1:c
for q=1:n
for r=1:n
d=(X(r,q)-V(r,p))^2;
D(p,q)=D(p,q)+d;
end
end
end
%隶属度矩阵U的更新
for ii=1:c
for jj=1:n
G=0;
for pp=1:c
g=D(ii,jj)/D(pp,jj);
G=G+g;
end
U(ii,jj)=1/G;%* U(ii,jj);
end
end
%目标函数
J2=0;%目标函数变化量初始化
for iii=1:c
for jjj=1:n
J1=(U(iii,jjj)^2)*D(iii,jjj);
J2=J2+J1;
J2;
end
end
if abs(J-J2)<=10^(-5)
break;
end
J=J2;
end
以上为程序,求运行结果,各参数的值,谢谢!