人生第一篇博客,也是为了迎接自己的研究生学习新阶段,希望能沉下心做更多的积累。这是我毕业设计在做证据理论研究的时候遇到的问题,当时百度不出一个具体清晰的算法实现代码,然后自己摸索一下,也算有个比较清晰的处理。(主要是这个方向可能太冷门了…)
计算公式整体思路
假设在识别框架 Θ 下,存在两个证据 E1 和 E2 及其基本信任分配函数 m1和 m2,焦元分别是 Ai和 Bj,将 m1 和 m2 视为行向量,则证据 m1和 m2间的 Jousselme距离可以表示
重点在于D,其中 D 为2NX2N对称矩阵(N = |Θ|),矩阵中元素为
|•| 表示集合的基,利用焦元 Ai和 Bj交集和并集的比值来表示它们的相似程度,称为Jaccard 系数。
整体来说,Jousselme距离就是通过矩阵的计算来体现两个证据间的差异程度。
matlab实现计算
- 计算集合的相似矩阵 (识别框架元素为n个)
function [ matrix ] = sim_D(n)
% 计算集合的相似矩阵(识别框架元素为n个)
%初始化矩阵
matrix=zeros(2^n,2^n);
%得到识别框架的所有子集形成的矩阵
s=ff2n(n);
%根据集合相似度为矩阵赋值(对称矩阵)
for i=2:2^n
for j=i:2^n
%计算两个子集之间的相似度
a=[s(i,:);s(j,:)];
D=1-pdist(a,'jaccard');
matrix(i,j)=D;
matrix(j,i)=D;
end
end
end
- 计算两个证据的Jousselme距离 (A为2个证据数据矩阵,D为相似矩阵)
function [d] = Jousselme(A,D)
s = A(1,:)- A(2,:);
d2 = s*D*s.';
d = sqrt(d2/2);
end