这段程序是我摘录模式识别与智能计算——matlab实现上的程序(P253),但在运行时出现??? Undefined function or variable 'DisSelDlg'. 的错误,我看书上的结果应该会出现个对话框提示我选择哪种距离计算类型,但是却运行出错!如果我在计算其距离时改用Getdistance()函数,那么该程序应该如何修改! 小生,先在此谢谢大家!
程序如下:
function [m_pattern] = C_KJunzhi(m_pattern, patternNum)
disType=DisSelDlg();%获得距离计算类型
[centerNum iterNum]=inputClassDlg();%获得类中心数和最大迭代数
for i=1:pattern
m_pattern(i).distance=inf;
m_pattern(i).category=-1;
end
randPattern=randperm(patternNum);
for i=1:centerNum%初始化,随即分配centernum个粒子为一类
m_pattern(randPattern(i)).category=i;
m_pattern(randPattern(i)).distance=0;
m_center(i).feature=m_pattern(randPattern(i)).feature;
m_center(i).index=i;
m_center(i).patternNum=1;
end
counter=0;%记录当前已经循环的次数
change=1;
while(counter
counter=counter+1;
change=0;
for i=1:patternNum
index=-1;
distance=inf;
for j=1:centerNum
tempDis=GerDistance(m_pattern(i),m_center(j),Distype);
if(distance>tempDis)
distance=tempDis;
index=j;
end
end
if(m_pattern(i).category==index)
m_pattern(i).distance=distance;
else
oldindex=m_pattern(i).category;%记录原类号
m_pattern(i).category=index;
m_pattern(i).distance=distance;
if(oldindex~=-1)
m_pattern(oldindex)=CalCenter(m_center(oldindex),m_pattern,patternNum);
end
m_center=CalCrenter(m_pattern(index),m_pattern,patternNum);
change=1;
end
end
end