📄 样品之间的距离.asv
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%函数名称 GetDistance(pattern1,pattern2,type)
%参数 pattern1:
% pattern2:
% type:距离模式 1;欧式距离;2:夹角余弦距离;3:特征是二值时
% 的夹角余弦距离;4:具有二值特征的Tanimoto测度
%返回值 result:距离
%函数功能 计算样品(或聚类中心)1和样品(或聚类中心)2间的距离,距离模式
% 由参数type给定
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fouction[result]=GetDistance(pattern1,pattern2,type)
result=0;
global Nwidth;%特征矩阵的宽带,本书取7,即样品特征为7*7矩阵
switch(type)
case 1 %欧式距离
result=sum((pattern1.feature(:)-pattern2.feature(:)).^2);
result=sqrt(result);
case 2 %夹角余弦
a=0;
b1=0;
b2=0;
for i=1:Nwidth
for j=1:Nwidth
a=a+pattern1.feature(i,j)*pattern2.feature(i,j);
b1=b1+pattern1.feature(i,j)*pattern1.feature(i,j);
b2=b2+pattern2.feature(i,j)*pattern2.feature(i,j);
end
end
if(b1*b2=0)
result=1-a/sqrt(b1*b2)
else
result=-1;
end
case 3 %二值夹角余弦
t1=zeros(Nwidth,Nwidth);
t2=zeros(Nwidth,Nwidth);
a=0;
b1=0;
b2=0;
for i=1:Nwidth
for j=1:Nwidth
if(pattern1.feature(i,j)>0.2)
t1(i,j)=1;
end
if(pattern2.feature(i,j)>0.2)
t2(i,j)=1;
endhj
a=a+t1(i,j)*t2(i,j);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -