📄 getdistance.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数名称 GetDistance(pattern1,pattern2,type)
% 参数 pattern1:样品(或聚类中心)1结构
% pattern2:样品(或聚类中心)2结构
% type:距离模式 1:欧氏距离;2:夹角余弦距离; 3:特征值是二值时的夹角余弦距离
% 返回值 result:距离
function [result]=GetDistance(pattern1,pattern2,type)
result=0;
[m,n]=size(pattern1);
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:m
for j=1:n
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=a/sqrt(b1*b2);
else
result=-1;
end
case 3
t1=zeros(m,n);
t2=zeros(m,n);
a=0;
b1=0;
b2=0;
for i=1:m
for j=1:n
if(pattern1.feature(i,j)>0.2)
t1(i,j)=1;
end
if(pattern2.feature(i,j)>0.2)
t2(i,j)=1;
end
a=a+t1(i,j)*t2(i,j);
b1=b1+t1(i,j)*t1(i,j);
b2=b2+t1(i,j)*t2(i,j);
end
end
if(b1*b2~=0)
result=a/sqrt(b1*b2);
else
result=-1;
end
case 4
t1=zeros(m,n);
t2=zeros(m,n);
a=0;
b1=0;
b2=0;
for i=1:m
for j=1:n
if(pattern1.feature(i,j)>0.2)
t1(i,j)=1;
end
if(pattern2.feature(i,j)>0.2)
t2(i,j)=1;
end
a=a+t1(i,j)*t2(i,j);
b1=b1+t1(i,j)*t1(i,j);
b2=b2+t1(i,j)*t2(i,j);
end
end
if(b1+b2-a~=0)
result=a/(b1+b2-a);
else
result=-1;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -