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