📄 c_zuidazuijuli.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 + -