#include<iostream.h>
#include<math.h>
const int n=2;
const int m=2;
double a[n][m];
double b[n];
double c[m];
double sum;
double danHb;
double Lianhe;
double Hc;
void input();
void output();
void panduan();
void LianheH();
void BH();
void CH();
void QiTA();
void main()
{
input();
output();
panduan();
LianheH();
BH();
CH();
QiTA();
}
void input()
{
cout<<"请输入联合概率密度 :\n";
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
}
void panduan()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
sum+=a[i][j];
if(sum==1.0)
cout<<"将执行下面操作:"<<endl;
else if(sum!=1.0)
{
cout<<" 输入错误,请重新输入 :"<<endl;
input();
}
}
void output()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cout<<" "<<a[i][j];
cout<<endl;
}
void LianheH()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
Lianhe+=a[i][j]*(log(a[i][j])/log(2))*(-1) ;
cout<<"联合熵为 "<<Lianhe<<endl;
}
void BH()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
b[i]+=a[i][j];
for( i=0;i<n;i++)
cout<<" "<<b[i]<<endl;
danHb=b[0]*(log(b[0])/log(2))*(-1)+b[1]*(log(b[1])/log(2))*(-1);
cout<<"H(B)熵为 "<<danHb<<endl;
}
void CH()
{
for(int j=0;j<m;j++)
for(int i=0;i<n;i++)
c[j]+=a[i][j];
for( j=0;j<m;j++)
cout<<" "<<c[j]<<endl;
Hc=c[0]*(log(c[0])/log(2))*(-1)+c[1]*(log(c[1])/log(2))*(-1);
cout<<"H(C)熵为 "<< Hc<<endl;
}
void QiTA()
{
double Fu,XY,YX;
Fu=danHb+Hc-Lianhe ;
XY=danHb-Fu;
YX=Hc-Fu;
cout<<"B条件C的熵, C条件B的熵,互信息量分别为 "<<XY<<" "<<YX<<" "<<Fu<<endl;
}
#include<iostream.h> //用于求有关已知一个随机事件的概率和条件概率的题型
#include<math.h>
const int n=2; //n和m表示两个随机事件的离散信源
const int m=2;
double a[n][m]; //条件概率分布
double Lianhe[n][m]; //联合概率分布
double b[n]; //X的概率分布
double c[m]; //Y的概率分布
double Lianheshang; //联合熵
double danHX; //H(x)
double Xtiaojian; //H(Y/X)
double Ytiaojian; //H(X/Y)
double danHy; //H(Y)
double Huxin; //I(X;Y)
void input(); //用于输入数据
void QiTai(); //用于计算其他概率
void LianheH(); //用于计算联合熵
void BH(); //用于计算H(x)
void Tiaojian(); //用于计算H(Y/X)
void Yshang(); //用于计算H(Y)
void QiTashang(); //用于计算H(X/Y)和I(X;Y)
void main()
{
input();
QiTai();
LianheH();
BH();
Tiaojian();
Yshang();
QiTashang();
}
void input()
{
cout<<"请输入事件X的概率密度 :\n";
cin>>b[0];
cout<<"请输入x1条件下y1的概率密度 :\n";
cin>>a[0][0];
cout<<"请输入x2条件下y1的概率密度 :\n";
cin>>a[1][0];
}
void QiTai()
{
b[1]=1-b[0];
a[0][1]=1-a[0][0];
a[1][1]=1-a[1][0];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
Lianhe[i][j]=b[i]*a[i][j];
}
cout<<"联合概率分布为:"<<endl;
for( i=0;i<n;i++)
for(int j=0;j<m;j++)
cout<< Lianhe[i][j]<<endl;
}
void BH()
{
for(int i=0;i<n;i++)
danHX+=b[i]*(log(b[i])/log(2))*(-1);
cout<<"H(X)熵为 "<<danHX<<endl;
}
void LianheH()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
Lianheshang+=Lianhe[i][j]*(log(Lianhe[i][j])/log(2))*(-1) ;
cout<<"联合熵为 "<<Lianheshang<<endl;
}
void Tiaojian()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
Xtiaojian+=Lianhe[i][j]*(log(a[i][j])/log(2))*(-1) ;
cout<<"H(Y/X)为 "<<Xtiaojian<<endl;
}
void Yshang()
{
for(int j=0;j<m;j++)
for(int i=0;i<n;i++)
c[j]+=Lianhe[i][j];
cout<<"Y的概率分布为 :"<<endl;
for(int i=0;i<n;i++)
cout<<c[i]<<endl;
danHy=c[0]*(log(c[0])/log(2))*(-1)+c[1]*(log(c[1])/log(2))*(-1);
cout<<"H(Y)熵为 "<<danHy<<endl;
}
void QiTashang()
{
Ytiaojian=Lianheshang-danHy;
Huxin=danHX+danHy-Lianheshang;
cout<<"H(X/Y)为 "<<Ytiaojian<<endl;
cout<<"I(X;Y)为 "<<Huxin<<endl;
}
#include<iostream.h> //用于计算已知联合概率题型
#include<math.h>
const int n=2; //n和m表示两个随机事件的离散信源
const int m=2;
double a[n][m]; //联合概率分布
double b[n]; //X的概率分布
double c[m]; //Y的概率分布
double sum; //用于判断输入的联合概率是否正确
double danHb; //H(x)
double Lianhe; //联合熵
double Hc; //H(Y)
void input(); //用于输入数据
void output(); //用于输出数据
void panduan(); //用于判断输入的联合概率是否正确
void LianheH(); //用于计算联合熵
void BH(); //用于计算H(x)
void CH(); //用于计算H(Y)
void QiTA(); //用于计算H(Y/X),H(X/Y)和(9X;Y)
void main()
{
input();
output();
panduan();
LianheH();
BH();
CH();
QiTA();
}
void input()
{
cout<<"请输入联合概率密度 :\n";
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
}
void panduan()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
sum+=a[i][j];
if(sum==1.0)
cout<<"将执行下面操作:"<<endl;
else if(sum!=1.0)
{
cout<<" 输入错误,请重新输入 :"<<endl;
input();
}
}
void output()
{ cout<<"联合概率分布"<<endl;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cout<<" "<<a[i][j];
cout<<endl;
}
void LianheH()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
Lianhe+=a[i][j]*(log(a[i][j])/log(2))*(-1) ;
cout<<"联合熵为 "<<Lianhe<<endl;
}
void BH()
{
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
b[i]+=a[i][j];
cout<<"X的概率分布为 "<<endl;
for( i=0;i<n;i++)
cout<<b[i]<<endl;
danHb=b[0]*(log(b[0])/log(2))*(-1)+b[1]*(log(b[1])/log(2))*(-1);
cout<<"H(X)熵为 "<<danHb<<endl;
}
void CH()
{
for(int j=0;j<m;j++)
for(int i=0;i<n;i++)
c[j]+=a[i][j];
cout<<"Y的 概率分布为 "<<endl;
for( j=0;j<m;j++)
cout<<c[j]<<endl;
Hc=c[0]*(log(c[0])/log(2))*(-1)+c[1]*(log(c[1])/log(2))*(-1);
cout<<"H(Y)熵为 "<< Hc<<endl;
}
void QiTA()
{
double Fu,XY,YX;
Fu=danHb+Hc-Lianhe ;
XY=danHb-Fu;
YX=Hc-Fu;
cout<<"X条件Y的熵, Y条件X的熵,互信息量分别为 "<<XY<<" "<<YX<<" "<<Fu<<endl;
}
#include<iostream.h>
#include<math.h>
double a[10]; //用于存储符号的概率
int n; //请输入单符号信源元素个数
double b[10]; //用于存储码字的概率
int k[10]; //用于存储Ki的K直
int c[10]; //用于存储二进吗
void input(); //输入数据函数
void paixi(); //对概率排序
void output(); //输出函数
void bgailui(); //用于求码字的概率
void kjisuan(); //用于求Ki的K直
void bbianma(); //用于编码
void panduan(); //用于对输入数据判断,避免符号的总和概率》1
void main()
{
input();
panduan();
paixi();
output();
bgailui();
kjisuan();
bbianma();
}
void input()
{
cout<<"请输入单符号信源元素个数 :\n";
cin>>n;
cout<<"请输入单符号概率 :\n";
for(int i=1;i<n+1;i++)
cin>>a[i];
}
void panduan()
{
double sum=0;
for(int i=0;i<n+1;i++)
sum+=a[i];
cout<<""<<sum<<endl;
if(sum==1.0)
cout<<"将执行下面操作:"<<endl;
else if(sum!=1.0)
{
cout<<" 输入错误,请重新输入 :"<<endl;
input();
}
}
void paixi()
{
int i,j,k;
double x;
for(i=1;i<n+1;i++)
{
k=i-1;
for(j=i;j<n+1;j++)
if(a[j]>a[k])
k=j;
x=a[i-1];a[i-1]=a[k];a[k]=x
小波思基
- 粉丝: 88
- 资源: 1万+
最新资源
- 【无人机编队】基于matlab多无人机编队平移与旋转做闭环控制【含Matlab源码 10910期】.zip
- 【无人机控制】基于matlab Backstepping方法无人机四电机滑模控制【含Matlab源码 10913期】.zip
- 【无人机编队】基于matlab无人机飞行包线【含Matlab源码 10908期】.zip
- 【心电信号ECG】基于matlab Pan-Tompkins方法QRS检测(含心率)【含Matlab源码 10899期】.zip
- 【无人机协同】基于matlab遗传算法GA同构异构无人机UAV协同搜索【含Matlab源码 10916期】.zip
- 【心电信号ECG】基于matlab心电信号ECG心率监测器(含BPM PR QT QRS 判断是否正常)【含Matlab源码 10900期】.zip
- 【心电信号ECG】基于matlab呼吸率和心率检测【含Matlab源码 10898期】.zip
- 【组合导航】基于matlab AHRS算法UWB和IMU融合组合导航【含Matlab源码 10904期】.zip
- 【组合导航】基于matlab卡尔曼滤波KF IMU和UWB融合高精度定位组合导航【含Matlab源码 10905期】.zip
- 【组合定位】基于matlab扩展卡尔曼滤波EKF融合UWB和IMU割草机定位【含Matlab源码 10906期】.zip
- 中科大 高级人工智能课程 复习讲义
- 获取动态库名称,自动排除lib前缀和rd,d后缀
- 一种评估源网荷储协同接纳新能源能力方法代码 该代码为一两阶段优化代码,第一阶段以综合成本最大求解出新能源消纳功率带入到第二阶段模型,二阶段模型还包括无功补偿设备
- 柔性输送线sw18可编辑全套技术资料100%好用.zip
- 软管缠绕机sw18可编辑全套技术资料100%好用.zip
- comsol激光熔覆 多层多道 包括视频和模型
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0