www.gusucode.com > 《MATLAB智能算法30个案例》分析源代码 > 《MATLAB智能算法30个案例》分析源代码/code/chapter20/FCMfun.m

    function [obj,center,U]=FCMfun(X,cluster_n,center,options)
%% FCM主函数
% 输入
%        X:样本数据
%cluster_n:聚类数
%   center:初始聚类中心矩阵
%  options:设置幂指数,最大迭代次数,目标函数的终止容限
% 输出
%    obj:目标输出Jb值
% center:优化后的聚类中心
%      U:相似分类矩阵
X_n=size(X,1);
in_n=size(X,2);
b=options(1);		    % 加权参数
max_iter=options(2);		% 最大迭代次数
min_impro=options(3);		% 相邻两次迭代最小改进(用来判断是否提前终止)
obj_fcn=zeros(max_iter,1);	% 初始化目标值矩阵
U = initFCM(X,cluster_n,center,b);			% 初始化聚类相似矩阵
% 主函数循环
for i = 1:max_iter,
    [U, center,obj_fcn(i)]=iterateFCM(X,U,cluster_n,b);
    % 核对终止条件
    if i > 1
        if abs(obj_fcn(i) - obj_fcn(i-1)) < min_impro, break; end,
    end
end
iter_n = i;	% 真实迭代次数
obj_fcn(iter_n+1:max_iter)=[];
obj=obj_fcn(end);