⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subfcm.m

📁 该算法是结合减法聚类与FCM聚类算法融合的远代码。算法通过融合这两种算法
💻 M
字号:
function [center,U,obj_fcn]=subfcm(data,C,cluster_n,options)

if nargin~=3 & nargin~=4
    error('Too many or too few input arguments!');
end

data_n=size(data,1);
in_n=size(data,2);
C_n=size(C,1);%最大聚类数目

if cluster_n > C_n
    error('The cluster number should be equal or smaller than C_n');
end

%默认参数
default_options=[2;%划分矩阵U系数
                100;%最大迭代次数
                1e-5;%迭代停止的最小增量准则
                1];%迭代过程的信息显示
            
            
if nargin==3,
    options=default_options;
else
    if length(options)<4,
        tmp=default_options;
        tmp(1:length(options))=options;
        options=tmp;
    end


nan_index=find(isnan(options)==1);
options(nan_index)=default_options(nan_index);
    if options(1)<=1,
         error('The exponent should be greater than 1!');
    end
end

expo=options(1);
max_iter=options(2);
min_impro=options(3);
display=options(4);

obj_fcn=zeros(max_iter,1);

%初始化模糊划分
center=C(1:cluster_n,:);
dist=distfcm(center,data);%计算欧式距离
tmp=dist.^(-2/(expo-1));
U=tmp./(ones(cluster_n,1)*sum(tmp));

%主循环
for i=1:max_iter,
    [U,center,obj_fcn(i)]=stepsubfcm(data,U,cluster_n,expo);
    if display,
        fprintf('Iteration count=%d,obj.fcn=%f\n',i,obj_fcn(i));
    end
    
    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)=[];

    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -