基于模糊等价关系的聚类方法matlab实现(包含模糊关系实现)

1.模糊关系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

function [rm] = step1_mission(samples)
    %%%%%%%%%% Begin %%%%%%%%%%
    [m,n] = size(samples);
    formalMt = zeros(m,n);
    rm = zeros(m,m);
    % 矩阵进行正规化
    minele = min(min(samples));
    maxele = max(max(samples));
    for mm =1:m
        for nn = 1:n
            formalMt = (samples-minele)/(maxele-minele);
        end
    end



    % 欧式距离法计算模糊关系矩阵R
    for mr = 1: m
        for nc = 1: m
            rm(mr,nc) = 1-sqrt(sum((formalMt(mr,:)-formalMt(nc,:)).^2)/n);
        end
    end
    
    %%%%%%%%%% End %%%%%%%%%%

end

2.基于模糊等价关系的聚类方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

function [result0] = step2_mission(samples, lambda)
    %%%%%%%%%% Begin %%%%%%%%%%
    [m,n] = size(samples);
    rm = step1_mission(samples);
    result = zeros(m,m);

    rm_save = zeros(m,m);
    rm_ = rm;

    flag = 1;
    rm_new = zeros(m,m);

    while(flag)
        flag = 0;

        for i = 1:m
            for j = 1:m
                if(i==j)
                    rm_(i,j) = 1;
                else
                    rm_(i,j) = func1(rm_,i,j);
                end
            end
        end



        for i = 1:m
            for j = 1:m
                if(abs(rm_(i,j)-rm_save(i,j)) >= 0.00000001)
                    flag=1;
                    break;
                end
            end
            if(flag)
                break;
            end
        end
        

        rm_save = rm_;
        
    end

    result0 = zeros(m,m);
    for mr=1:m
        for mc=1:m
            if(rm_save(mr,mc)>lambda);
                result0(mr,mc) = 1;
            else
                result0(mr,mc) = 0;
            end
        end
    end

    %%%%%%%%%% End %%%%%%%%%%

end


function [re] = func1(dis,i,j)
    re = 0;
    [m,m] = size(dis);
    for t=1:m
        if(dis(i,t) < dis(t,j))
            td = dis(i,t);
        else
            td = dis(t,j);
        end
        if(re<td)
            re = td;
        end
    end
end




function [rm] = step1_mission(samples)
    %%%%%%%%%% Begin %%%%%%%%%%

    [m,n] = size(samples);
    formalMt = zeros(m,n);
    rm = zeros(m,m);
    % 矩阵进行正规化
    minele = min(min(samples));
    maxele = max(max(samples));
    for mm =1:m
        for nn = 1:n
            formalMt = (samples-minele)/(maxele-minele);
        end
    end



    % 欧式距离法计算模糊关系矩阵R
    for mr = 1: m
        for nc = 1: m
            rm(mr,nc) = 1-sqrt(sum((formalMt(mr,:)-formalMt(nc,:)).^2)/n);
        end
    end
    


    %%%%%%%%%% End %%%%%%%%%%

end

版权声明:本文为m0_46384757原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。