📄 c_zuiduanjuli.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数名称:C_ZuiDuanJuLi()
% 参数:m_pattern:样品特征库;patternNum:样品数目
% 返回值:m_pattern:样品特征库
% 函数功能:按照最短距离法对全体样品进行分类
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [m_pattern]=C_ZuiDuanJuLi(m_pattern,patternNum)
disType=DisSelDlg();%获得距离计算类型
T=InputThreshDlg(m_pattern,patternNum,disType);%获得阀值
%初始化,所有样品各分一类
for i=1:patternNum
m_pattern(i).category=i;
end
while(true)
minDis=inf;
pi=0;
pj=0;
%寻找距离最近的两类pi、pj,记录最小距离minDis
for i=1:patternNum-1
for j=i+1:patternNum
if(m_pattern(i).category~=m_pattern(j).category)
tempDis=GetDistance(m_pattern(i),m_pattern(j),disType);
if(tempDis<minDis)
minDis=tempDis;
pi=m_pattern(i).category;
pj=m_pattern(j).category;
end
end
end
end
if(minDis<T)%距离小于阀值,合并pi、pj类
if(pi>pj)%将较大类号归入较小类号
temp=pi;
pi=pj;
pj=pi;
end
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
else
break;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -