%% 功能:融合x,y两行向量(经典Dempster-Shafer组合公式)
% x,y的格式形如[m1 m2 m3, ... , mk, m(全集), m(空集)]
% 要求m1 m2 m3 ...之间互相无交集
% m(全集)可不为0,表示不确定度
% m(空集)肯定是0
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (前一行,后一行)
function x=DS_fusion(x,y)%% DS_fusion(1*6 , 1*6)
%% 判断输入x、y为行向量;列数相等
[nx,mx]=size(x);
if 1~=nx
disp('x应为行向量');
return;
end
[ny,my]=size(y);
if 1~=ny
disp('y应为行向量');
return;
end
if mx~=my
disp('x,y列数应相等');
return;
end
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
temp=0;
for i=1:mx-1 %% nx=1 mx=6
if i==mx-1
x(1,i)=x(1,i)*y(1,i); %% 对全集的特殊处理
else
x(1,i)=x(1,i)*y(1,i)+x(1,i)*y(1,mx-1)+y(1,i)*x(1,mx-1);
end
temp=temp+x(1,i);
end
for i=1:mx-1
x(1,i)=x(1,i)/temp;
end
x(1,mx)=0;
文件3 ds_judg.m
function x=DS_judg(Result,ec1,ec2,num_Object)
res=zeros(1,num_Object);
a1=max(Result);
[c,r]=find(Result==a1);
res=Result;
res(c,r)=0;
a2=max(res);
if a1-a2>ec1 %% &&a1>Result(1,num_Object-1)&&Result(1,num_Object-1)<ec2
y1=1
if Result(1,num_Object-1)<ec2
y2=1
if a1>Result(1,num_Object-1)
y3=1
x=[c,r,a1];
end
end
else x=[0,0,0];
end