⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fghfgh.cpp

📁 一、 实验目的:通过该实验
💻 CPP
字号:
#include<iostream>
#include<cmath>
#define n 4
#define m 4
using namespace std;
int main(){
	double Hx(double a[n]);
	double Hy(double a[m]);
	double Hy_x(double a[n][m],double b[n][m]);
	double Hx_y(double a[n][m],double b[n][m]);
	double Hxy(double a[n][m]);
	double Ixy(double a[n][m],double b[n][m],double c[n]);
	double Px[n];
	cout<<"请输入"<<n<<"个概率:"<<endl;
	for(int i=0;i<n;i++){
		cin>>Px[i];
	}
	double Py_x[n][m];
	cout<<"请输入"<<n<<"*"<<m<<"信道矩阵:"<<endl;
	for( i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>Py_x[i][j];
		}
	}
	double Pxy[n][m];
	for( i=0;i<n;i++){
		for(int j=0;j<m;j++){
			Pxy[i][j]=Px[i]*Py_x[i][j];
		}
	}
	double Py[m];
	for( i=0;i<n;i++){
		for(int j=0;j<m;j++){
			Py[j]=0;
			Py[j]=Py[j]+Pxy[i][j];
		}
	}
	double Px_y[n][m];
	for( i=0;i<n;i++){
		for(int j=0;j<m;j++){
		Px_y[i][j]=Pxy[i][j]/Py[j];
		}
	}
	double HX=Hx(Px);
	double HY=Hy(Py);
	double HY_X=Hy_x(Pxy,Py_x);
	double HX_Y=Hx_y(Pxy,Px_y);
	double HXY=Hxy(Pxy);
	double IXY=Ixy(Pxy,Px_y,Px);
	cout<<"H(X)="<<HX<<endl;
	cout<<"H(Y)="<<HY<<endl;
	cout<<"H(Y/X)="<<HY_X<<endl;
	cout<<"H(X/Y)="<<HX_Y<<endl;
	cout<<"H(XY)="<<HXY<<endl;
	cout<<"I(X;Y)="<<IXY<<endl;
	return 0;
}
double Hx(double a[]){
	double hx=0,s;
	for(int i=0;i<n;i++){
		s=-a[i]*log(a[i])/log(2);
		hx=hx+s;
	}
	return hx;
}
double Hy(double a[]){
	double hy=0,s;
	for(int j=0;j<n;j++){
		s=-a[j]*log(a[j])/log(2);
		hy=hy+s;
	}
	return hy;
}
double Hx_y(double a[n][m],double b[n][m]){
	double hx_y=0,s;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
		s=-a[i][j]*log(b[i][j])/log(2);
		hx_y=hx_y+s;
		}
	}
	return hx_y;
}
double Hy_x(double a[n][m],double b[n][m]){
	double hy_x=0,s;
    for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
		s=-a[i][j]*log(b[i][j])/log(2);
		hy_x=hy_x+s;
		}
	}
	return hy_x;
}
double Hxy(double a[n][m]){
	double hxy=0,s;
    for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
		s=-a[i][j]*log(a[i][j])/log(2);
		hxy=hxy+s;
		}
	}
	return hxy;
}
double Ixy(double a[n][m],double b[n][m],double c[]){
	double ixy=0,s;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			s=a[i][j]*(log(b[i][j])-log(c[i])/log(2));
			ixy=ixy+s;
		}
	}
	return ixy;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -