📄 c_zhongjianjuli.asv
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数名称:C_ZhongJianJuLi()
% 参数:m_pattern:样品特征库;patternNum:样品数目
% 返回值:m_pattern:样品特征库
% 函数功能:按照中间距离法对全体样品进行分类
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [m_pattern]=C_ZhongJianJuLi(m_pattern,patternNum)
disType=DisSelDlg(); %获得距离计算类型
T=InputThreshDlg(m_pattern,patternNum,disType); %获得阈值
%初始化,所有样品各分一类
for i=1:patternNum
m_pattern(i).category=i;
end
centerNum=patternNum;
%建立类间距离数组,centerdistance(i,j)表示i类和j类距离
centerdistancezeros(centerNum,centerNum);
for i=1:patternNum-1
for j=i+1;patternNum
centerdistance(i,j)=GetDistance(m_pattern(i),m_pattern(j),disType);
end
end
while(true)
td=inf;
for i=1:centerNum-1
for j=i+1:centerNum
if(td>cenerdistance(i,j)
td=centerdistance(i,j) %找到距离最近的两类:ti,tj,记录最小距离td;
ti=i;
tj=j;
end
end
end
if(td<T) %合并i,j
for i=1:patternNum
if(m_pattern(i).category==tj)
m_pattern(i).category=ti;
elseif(m_pattern(i).category>tj)
m_pattern(i).category=m_pattern(i).category-1;
end
end
centerNum=centerNum-1;
tempDistance=centerdistance;
for i=1:centerNum-1 %重新计算合并后的类到其他各类的新距离
for j=i+1;centerNum
if(i<ti)
if(j=ti)
tempDistance(i,j)=sqrt(centerdistance(i,ti)*centerdistance(i,ti)/2+centerdistance(i,tj)*centerdistance(i,tj)/2-centerdistance(ti,tj)*center(ti,tj)/4);
else(j>tj)
tempDistance(i,j)=centerdistance(i,j+1);
else
tempDistance(i,j)=centerdistance(i,j);
end
elseif(i==ti)
if(j<tj)
tempDistance(i,j)=sqrt(centerdistance(ti,j)*centerdistance(ti,j)/2+centerdistance(j,tj)*centerdistance(j,tj)/2-centerdistance(ti,tj)*center(ti,tj)/4);
else
tempDistance(i,j)=sqrt(centerdistance(ti,j+1)*centerdistance(ti,j+1)/2+centerdistance(tj,j+1)*centerdistance(tj,j+1)/2-centerdistance(ti,tj)*center(ti,tj)/4);
end
elseif((i>ti)&&(i<tj))
if(j<tj)
tempDistance(i,j)=centerdistance(i,j);
else
tempDistance(i,j)=centerdistance(i,j+1)
end
else
tempDistance(i,j)=tempDistance(i+1,j+1);
end
end
end
centerdistance=tempDistance;
else
break
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -