D-S证据理论c++代码 QT版本

D-S证据理论c++代码 QT版本

直接上源码

第一次接触D-S证据理论,发现网上的c++代码很少,所以自己写了一个简单的demo,实现了最原始的D-S证据理论,有错误请指正,各位大佬有改进算法可以一起交流学习哦。

#include "ds.h"
#include <QVector>
#include <QDebug>

DS::DS(QWidget *parent)
    : QWidget(parent)
{

    QVector< QVector<float> > BPA(size_identify, QVector<float>(num_proof)); //基本概率分配
    QVector<float> Mass(size_identify);//合成规则求mass函数(组合数据)
    QVector<float> Res;//合成结果


    //导入基本概率分配
//    for(int i = 0; i < num_proof; i++)
//    {
//        for(int j = 0; j <size_identify; j++)
//        {
//            BPA[j][i] = ;
//        }
//    }

    //自定义BPA
    BPA[0][0] = 0.5;
    BPA[1][0] = 0.2;
    BPA[2][0] = 0.3;
    BPA[0][1] = 0;
    BPA[1][1] = 0.9;
    BPA[2][1] = 0.1;
    BPA[0][2] = 0.6;
    BPA[1][2] = 0.1;
    BPA[2][2] = 0.3;

    //求解归一化常数K
    float K;
    for(int i = 0; i < size_identify; i++)
    {
        float temp = 1;
        for(int j = 0; j < num_proof; j++)
        {
            temp *= BPA[i][j];
        }
        K += temp;
    }
    qDebug()<<K;

    if(K == 0)
    {
        exit(1);
    }


    //根据合成规则计算组合数据
    for(int i = 0; i < size_identify; i++)
    {
        float temp = 1;
        for(int j = 0; j < num_proof; j++)
        {
            temp *= BPA[i][j];
        }
        Mass[i] = temp / K;
        qDebug()<<Mass[i];
        Res.append(Mass[i]);
    }

    //计算最终结果
    qDebug()<<Res;

}

DS::~DS()
{

}

参考链接

链接: https://blog.csdn.net/qq_30094523/article/details/94643198

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页