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

📄 fcm.m

📁 模糊聚类分析传递闭包算法FCM的matlab程序
💻 M
字号:
%BY YY  模糊聚类算法 2008.3.4
%采用数量积求相似矩阵 
%输入样本矩阵
X=input('please input X:');
[N,M]=size(X);
%N是样本数 M是特征数
%N个样本M个指标的平均值矩阵和标准差矩阵
P=zeros(M,1);
for j=1:M
    for i=1:N
        P(j)=P(j)+X(i,j);
    end
    P(j)=P(j)/N;
end
P1=zeros(M,1);
for j=1:M
    for i=1:N
        P1(j)=P1(j)+(X(i,j)-P(j))*(X(i,j)-P(j));
    end
    P1(j)=P1(j)/N;
    P1(j)=sqrt(P1(j));
end
%标准化将数据归一化
for i=1:N
    for j=1:M
        X1(i,j)=(X(i,j)-P(j))/P1(j);
    end
end
for j=1:M
   A(j)=min(X1(:,j));%最小
   B(j)=max(X1(:,j));%最大
end 
for i=1:N
    for j=1:M
        X2(i,j)=(X1(i,j)-A(j))/(B(j)-A(j));
    end 
end 
X2
%以上都是数据标准化
%下面建立模糊相似矩阵
R1=zeros(N,N);
for i=1:N
    for k=1:N
        if i==k ;
        else 
            
           for j=1:M
            R1(i,k)= R1(i,k)+X2(i,j)*X2(k,j);
           end
        end
    end
end
m=max(R1);
m=max(m);
R=zeros(N,N);
for i=1:N
    for j=1:N
        if i==j
            R(i,j)=1;
        else
            R(i,j)=R1(i,j)/m;
        end
    end
end
R
%建立模糊等价关系矩阵
flag=0;
C=R;
T=zeros(N,N);
while flag==0
    for i=1:N
        for j=1:N
            for k=1:N
            T(i,j)=max(min(C(i,k),C(k,j)),T(i,j));%计算传递闭包 不能少T(i,j)这项 否则T(i,i)将不再为1 取大取小合运算
            end
        end
    end
    if T==C
        flag=1;
    else
        C=T;
    end
end
T %输出传递闭包
%取不同的置信水平q,q需要设定
q=0.25;
for i=1:N
    for j=1:N
        if T(i,j)>=q
            T1(i,j)=1;
        else
            T1(i,j)=0;
        end
    end
end
T1 %T1为一个P截矩阵 如有对应的列向量相等,则是同一类
%输出结果
F=zeros(N,N);
k=1;
for i=1:N
    e=1;
    F(k,e)=i;
    for j=1:N
        if i==j;
        else
            if isequal(T1(i,:),T1(j,:))
               e=e+1;
               F(k,e)=j;
            end
        end
    end
    k=k+1;
end
F
            



        

⌨️ 快捷键说明

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