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

📄 c_zuichangjuli.m

📁 用matlab实现聚类算法
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数名称:C_ZuiChangJuLi()
% 参数:m_pattern:样品特征库;patternNum:样品数目
% 返回值:m_pattern:样品特征库
% 函数功能:按照最长距离法对全体样品进行分类
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [m_pattern]=C_ZuiChangJuLi(m_pattern,patternNum)
disType=DisSelDlg(); %获得距离计算类型
T=InputThreshDlg(m_pattern,patternNum,disType); %获得阈值
% 初始化,所有样品各分一类
for i=1:patternNum
    m_pattern(i).category=i;
end
centerNum=patternNum;

while(true)
    minDis=inf;
    pi=0;
    pj=0;
    % 求两类间的最大距离,找出所有类间距离中最小的为minDis,记录类号pi,pj
    for i=1:centerNum-1
        for j=i+1:centerNum 
            maxDis=-1;
            for m=1:patternNum-1
                for n=m+1:patternNum
                    if((m_pattern(m).category==i)&&(m_pattern(n).category==j)||(m_pattern(m).category==j&&m_pattern(n).category==i))
                        tempDis=GetDistance(m_pattern(m),m_pattern(n),disType);
                        if(tempDis>maxDis)
                            maxDis=tempDis;
                        end
                    end
                end
            end
            if(maxDis<minDis)
            minDis=maxDis;
            pi=i;
            pj=j;
            end
        end
    end
    if(minDis<T) %距离小于阈值,合并pi,pj类
        for i=1:patternNum
            if(m_pattern(i).category==pj)
                m_pattern(i).category=pi;
            elseif(m_pattern(i).category>pj)
                m_pattern(i).category=m_pattern(i).category-1;
            end
        end
    centerNum=centerNum-1;
    else
        break;
    end
end

⌨️ 快捷键说明

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