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

📄 c_zuidazuijuli.m

📁 用matlab实现聚类算法
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数名称:   C_ZuiDaZuiXiaoJuLi()
% 返回值:  pattern: 样品特征库
% 函数功能: 按照最大最小距离对全体样品进行分类
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [m_pattern]=C_ZuiDaZuiJuLi(m_pattern,patternNum)
disType=DisSelDlg(); %获得计算距离类型
maxDistance=0;   %记录两类间的最大距离,用做分类的分割阈值
index=1;         %记录距离第一个中心最远的样品

m_center(1).feature=m_pattern(1).feature; %第一个聚类中心
m_center(1).index=1;
m_center(1).patternNum=1;
m_pattern(1).category=1;
centerNum=1;

for i=1:patternNum %第二个聚类中心
    tDistance=GetDistance(m_pattern(i),m_center(1),disType);
    if(maxDistance<tDistance)
        maxDistance=tDistance;
        index=i;
    end
end

m_center(2).feature=m_pattern(index).feature;
m_center(2).index=2;
m_center(2).patternNum=1;
m_pattern(index).category=2;
centerNum=2;

for i=1:patternNum
    MAX=inf;
    index=0;  %记录样品距离最最近的中心
    for j=1:centerNum
        tDistance=GetDistance(m_pattern(i),m_center(j),disType);
        if(MAX>tDistance)
            MAX=tDistance;
            index=j;
        end
    end
    if(MAX>maxDistance/3) %样品到最近中心的距离大于阈值,建立新的聚类中心
        centerNum=centerNum+1;
        m_center(centerNum).feature=m_pattern(i).feature;
        m_center(centerNum).index=centerNum;
        m_center(centerNum).patternNum=1;
        m_pattern(i).category=centerNum;
    else
        m_pattern(i).category=m_center(index).index;
        m_center(index)=CalCenter(m_center(index),m_pattern,patternNum);
    end
end

⌨️ 快捷键说明

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