• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Matlab
  • 标签: MATLAB  

资源简介

FCM聚类。。

资源截图

代码片段和文件信息

function[centerUobj_fun]=FCMCluster(datanoptions)
%采用模糊C均值将数据集data分为n类
%用法
% 1 [centerUobj_fcn]=FCMCluster(datanoptions);
% 2 [centerUobj_fcn]=FCMCluster(datan);

%输入 
% data    n*m矩阵,n个样本数,每个样本的维度为m
% n       类别数
% options 4*1 矩阵
%   options(1):隶属度矩阵U的加权指数>1(缺省值2.0)
%   options(2):最大迭代次数(缺省值100)
%   options(3):隶属度最小变化量,迭代终止条件(缺省值1e-5)
%   options(4):每次迭代是否输出信息标志(缺省值0)

%输出
% center    聚类中心
% U         隶属度矩阵
% obj_fun   目标函数值


if nargin~=2 && nargin~=3
    error(‘Too many or too few input arguments‘);  
end 

data_n=size(data1);   %求出data的第一维数,即行数、样本数     
in_n=size(data2);  %求出data的第二维数,即列数、特征属性个数

%默认参数
default_options=[2;100;1e-6;1];%隶属度矩阵U的指数2,最大迭代次数100,
                               %隶属度最小变化量,迭代终止条件1e-5
                               %1指输出迭代信息标志,可以设为0不输出。


%参数配置
  %如果只输入前两个参数,选用默认的参数;如果参数个数小于4,其他选用默认参数
  if nargin==2
      options=default_options;   %如果输入参数是2,则调用默认的option
  else
       if length(options)<4  %如果option<4,则使用其他默认值
           tmp=default_options;
           tmp(1:length(options))=options;
           options=tmp;
       end 
       nan_index=find(isnan(options)==1); %检测option中是否有nan值
       options(nan_index)=default_options(nan_index);%将default_option的对应位
                                             %置的数值给option中不是数的位置

       if options(1)<=1
           error(‘The exponent should be greater than 1!‘);
       end  %如果模糊矩阵的指数<=1,给出报错。
  end 

  %将options 中的分量分别赋值给四个变量
  expo=options(1); %隶属度矩阵U的指数
  max_iter=options(2);%最大迭代次数
  min_impro=options(3);%隶属度最小变化量,迭代终止条件
  displ

评论

共有 条评论