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

📄 fcm.asv

📁 FCM算法的matlab实现
💻 ASV
字号:
function [Umat,Cmat,it,valJ] = fcm(Xdat,C,mfuz,epsilon,itmax);
%   function [Umat,Cmat,it,valJ] = fcm(Xdat,K,mfuz,epsilon,itmax);
%   模糊聚类主函数%   
%   Xdat :原数据集,大小为(M,N)
%   C    :聚类数目
%   M:数据的个数,N:数据的维数
%   mfuz :加权指数m
%   Umat :模糊划分矩阵,大小为(C,M)
%   Cmat :聚类中心矩阵,大小为(C,N)
%   Dmat :距离矩阵,大小为(C,M)   
%   epsilon :运算中止条件
%   itmax   :最大迭代次数
%   it      :迭代次数

load iris.txt;
Xdat = iris(:,3:6);
C=3;
mfuz=2;
epsilon=0.001;
itmax=100;
[M,N] = size(Xdat);
%   initialization of Cmat using random values
Cmat = fcm_dataInitC(Xdat,C);
Ct=Cmat;
it=1;
stab = 0;
while (it<itmax & stab ~=1)
%   compute matrix of distance
Dmat = fcm_calcD(Xdat,Cmat);
%   compute initial Umat
Umat = fcm_calcU(mfuz,Dmat);
Cmat = fcm_calcC(Xdat,C,mfuz,Umat);
Ct=Ct-Cmat;

%Ut = Umat;
%it=1; stab = 0;
%while (it<itmax & stab ~=1)
    %   compute Cmat, the matrix of centroids, from Xdat and Ut
 %   Cmat = fcm_calcC(Xdat,K,mfuz,Ut);
    %   Compute Dmat, the matrix of distances (euclidian)
  %  Dmat = fcm_calcD(Xdat,Cmat);
    %   update Umat, the fuzzy partition matrix
   % Umat = fcm_calcU(mfuz,Dmat);
    %   Calculate difference between Ut and Umat and put it in Ut
    %Ut = Ut-Umat;
    %fnorm = norm(Ut,'fro');
    %if (fnorm<epsilon)    stab = 1;   else    Ut = Umat;    end
    %it = it+1;
end


%valJ = fcm_evalJ(Umat,mfuz,Dmat);
return %% end of function fcm.m

⌨️ 快捷键说明

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