#include <iostream>
#include <stdio.h>
using namespace std;
const int row=2; //证据个数
const int size=6; //识别框架大小
void main()
{
float A[row][size]; //存储各个证据的基本可信数
float B[size]; //融合结果
float AB[size][size]; //存储组合数据
/************************************************************************/
/* 输入证据基本可信数 */
/************************************************************************/
for (int i=0; i<row; i++)
{
cout<<"输入第"<<i<<"个证据"<<endl;
for (int j=0; j<size; j++)
{
cin>>A[i][j];
}
}
/************************************************************************/
/* 计算组合数据 */
/************************************************************************/
for (int i=0; i<size; i++)
{
for (int j=0; j<size; j++)
{
AB[i][j]=(float)(A[0][j]*A[1][i]);
}
}
/************************************************************************/
/* 输出组合数据 */
/************************************************************************/
cout<<"输出组合数据:"<<endl;
for (int i=0; i<size; i++)
{
for (int j=0; j<size; j++)
{
printf("%.3f",AB[i][j]);
cout<<" ";
}
cout<<endl;
}
/************************************************************************/
/* 计算不一致因子 */
/************************************************************************/
float k=0.0;
for (i=0; i<size-1; i++)
{
for (int j=0; j<size-1; j++)
{
if (i!=j)
{
k +=AB[i][j];
}
}
}
cout<<"不一致因子为"<<k<<endl;
if (k==0)
{
exit(1);
}
/************************************************************************/
/* 计算融合结果 */
/************************************************************************/
int temp=size-1;
k=1-k;
for (int i=0; i<temp; i++)
{
B[i]=(AB[i][i]+AB[i][temp]+AB[temp][i])/k;
}
B[temp]=AB[temp][temp]/k;
/************************************************************************/
/* 输出融合结果 */
/************************************************************************/
cout<<"融合结果为"<<endl;
for (int i=0; i<size; i++)
{
cout<<B[i]<<" ";
}
}
d-s证据理论C++代码
最新推荐文章于 2024-06-16 10:42:13 发布
本文档提供了关于Dempster-Shafer证据理论的C++代码实现,详细阐述了如何利用C++进行证据融合和处理,对于理解和应用证据理论在不确定性推理中具有指导意义。
摘要由CSDN通过智能技术生成