简单匹配系数、Jaccard系数的MATLAB实现
问题描述
实现任意给定两个相同维度的布尔向量之间的简单匹配系数、Jaccard系数计算函数
代码实现
实现程序如下图所示:
% 简单匹配系数
% function dist1 = dist_SMC(x,y)
function dist1 = dm(x,y)
[m,n]=size(x);
f00 = 0;
f01 = 0;
f10 = 0;
f11 = 0;
for i=1:n
if(x(i)==0 && y(i)==1)
f01 = f01+1;
elseif(x(i)==1 && y(i)==0)
f10 = f10+1;
elseif(x(i)==1 && y(i)==1)
f11 = f11+1;
else
f00 = f00+1;
end
end
dist1 = (f00+f11)/(f00+f01+f10+f11);
end
% Jaccard系数
% function dist1 = dist_Jaccard(x,y)
function dist1 = dm(x,y)
[m,n]=size(x);
f01 = 0;
f10 = 0;
f11 = 0;
for i=1:n
if(x(i)==0 && y(i)==1)
f01 = f01+1;
elseif(x(i)==1 && y(i)==0)
f10 = f10+1;
elseif(x(i)==1 && y(i)==1)
f11 = f11+1;
end
end
dist1 = f11/(f01+f10+f11);
end
命令行窗口输入如下代码:
x=[0,0,1,1,1]; y=[0,1,0,0,1];dist1=dm(x,y)
代码执行结果:
1)简单匹配系数:
2)Jaccard系数: