d-s证据理论 matlab代码2

该博客介绍了如何在Matlab7.1环境下应用D-S证据理论,包括一个主控程序`simulate.m`和两个辅助函数`ds_fusion.m`、`ds_out.m`。通过这些代码,读者可以理解D-S证据理论的融合过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码说明:
matlab7.1环境,把当前文件夹指定为matlab工作目录
simulate.m为主控程序
其余为被调函数

文件1 ds_fusion.m

function x=DS_fusion(x,y)

%功能:融合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
    x(1,i)=x(1,i)*y(1,i)+x(1,i)*y(1,mx-1)+y(1,i)*x(1,mx-1);
    if i==mx-1
        x(1,i)=x(1,i)*y(1,i);
    end
    temp=temp+x(1,i);
end

for i=1:mx-1
    x(1,i)=x(1,i)/temp;
end

x(1,mx)=0;
    

文件2 ds_out.m

function DS_out(Result,ec1,ec2)

%功能:由Result结果和ec1 ec2做出判断   


[nx,mx]=size(Result);
if 1~=nx
    disp('Result应为行向量');
    return;
end

[data,index]=sort(Result(1,1:mx-2));  %升序排列

if (Result(index(mx-2))-Result(index(mx-3))>ec1)  &  (Result(mx-1)<ec2)  &  (Result(index(mx-2))>Result(mx-1))
    if index(mx-2)==1   %火控 瞄准 导航 预警
        Type='机载火控雷达';
    elseif index(mx-2)==2   
        Type='机载瞄准雷达';
    elseif index(mx-2)==3   
        Type='机载导航雷达';
    elseif index(mx-2)==4   
        Type='机载预警雷达';
    else
        Type='识别算法出错';
    end
else
    Type='无法识别目标';
end

Type


   

    

文件3 simulate.m

clear

  %%%%%%%%%%  D_S算法设置   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    num_Sensor=3;   %传感器数目
    num_Object=6;   %识别对象数目  四个目标(机载雷达:  火控 瞄准 导航 预警)+全集+空集
    num_Period=3;   %测量周期数
    
    Info=zeros(num_Sensor,num_Object,num_Period);   % 一次判决所需要的信息
    
    Info(:,:,1)=[0.30 0.40 0.15 0.00 0.15 0.00;
                 0.30 0.50 0.10 0.00 0.10 0.00;
                 0.30 0.30 0.20 0.00 0.20 0.00;];
    
    Info(:,:,2)=[0.40 0.20 0.20 0.00 0.20 0.00;
                 0.50 0.20 0.20 0.00 0.10 0.00;
                 0.50 0.30 0.10 0.00 0.10 0.00;];
            
    Info(:,:,3)=[0.50 0.20 0.15 0.00 0.15 0.00;
                 0.40 0.30 0.10 0.00 0.20 0.00;
                 0.40 0.20 0.10 0.00 0.30 0.00;]; 
             
    Info1=zeros(num_Period,num_Object);
 
    %各周期内传感器的融合
    for i=1:num_Period
        Info1(i,:)=Info(1,:,i);
        for j=1:num_Sensor-1
            Info1(i,:)=DS_fusion(Info1(i,:),Info(j+1,:,i));
        end
    end
    
    %周期之间的融合
    Result=Info1(1,:);
    for i=1:num_Period-1
        Result=DS_fusion(Result,Info1(i+1,:));
    end
    
    ec1=0.1;  %融合决策判据
    ec2=0.1;
    DS_out(Result,ec1,ec2);
    
    

    
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值