信息论与编码实验报告
信息论与编码实验报告
求信息量的流程图:开始
获取离散信息源参 数 P(X)和 P(Y/X)
计 算 联 合 概 率 P(xiyj)=P(xi)*P(yj/xi)
计 算 P(yj) 及 后 验 概 率 P(xi/yj)=P(xiyj)/P(yj)
根据定义求信源 熵 H(X)和 H(Y)
根据定义求条件熵 H(X/Y)和 H(Y/X)
根据定义求联合 熵 H(XY)
求 交 互 熵 I(X;Y)=H(X)+H(Y)-H(XY)
输出已知条件、信 源熵、条件熵、联 合熵和交互熵
求信道容量 C (不会)
信息论与编码实验报告
float pX[2]={0.5,0.5},pY_X[2][2]={{0.98,0.02},{0.2,0.8}}; float pXY[2][2],pY[2],pX_Y[2][2];
float hX,hY,hXY=0.0,hY_X=0.0,hX_Y=0.0; float iXY=0.0,iYX=0.0; int i,j;
//计算联合概率 for(i=0;i<2;i++) for(j=0;j<2;j++) pXY[i][j]=pX[i]*pY_X[i][j]; //计算Y的概率 for(i=0;i<2;i++) pY[i]=pXY[0][i]+pXY[1][i]; //计算X的后验概率 for(i=0;i<2;i++) for(j=0;j<2;j++) pX_Y[j][i]=pXY[i][j]/pY[j]; //求信源熵
hX=-(pX[0]*(log(pX[0])/log(2))+pX[1]*(log(pX[1])/log(2))); cout<<"信源熵H(X)="<<hX<<endl;
hY=-(pY[0]*(log(pY[0])/log(2))+pY[1]*(log(pY[1])/log(2))); cout<<"信源熵H(Y)="<<hY<<endl; //求条件熵 for(i=0;i<2;i++) for(j=0;j<2;j++) hY_X+=-(pXY[i][j]*log(pY_X[i][j])/log(2)); cout<<"条件熵H(Y/X)="<<hY_X<<endl; for(i=0;i<2;i++) for(j=0;j<2;j++) hX_Y+=-(pXY[i][j]*log(pX_Y[j][i])/log(2)); cout<<"条件熵H(X/Y)="<<hX_Y<<endl; //求联合熵 for(i=0;i<2;i++) for(j=0;j<2;j++) hXY+=-(pXY[i][j]*log(pXY[i][j])/log(2)); cout<<"联合熵H(XY)="<<hXY<<endl; //交互熵
iXY=hX+hY-hXY;
cout<<"交互熵I(X;Y)=I(Y;X)="<<iXY<<endl; float beta[2],C;
//求信道容量
信息论与编码实验报告
香农编码流程图:
香农编码关键源代码:
int main() { int N; cout<<"请输入信源符号个数:";cin>>N; cout<<"请输入各符号的概率:"<<endl; double *X=new double[N]; //离散无记忆信源 int i,j; for(i=0;i<N;i++) {
信息论与编码实验报告
cout<<"X["<<i+1<<"]="; cin>>X[i]; } //由大到小排序 for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if(X[i]<X[j]) { double temp=X[i];X[i]=X[j];X[j]=temp; } int *K=new int[N]; //确定码长 for(i=0;i<N;i++) { K[i]=int(-(log(X[i])/log(2)))+1; //默认码长为1-log2(p(xi)) if(K[i]==(-(log(X[i])/log(2))+1)) //当K[i]=-log2(p(xi))时,K[i]-- K[i]--; } //累加概率 double *Pa=new double[N]; Pa[0]=0.0; for(i=1;i<N;i++) Pa[i]=Pa[i-1]+X[i-1]; //将累加概率转换为二进制 string *code=new string[N]; for(i=0;i<N;i++) for(j=0;j<N;j++) //这里默认最大码长不超过信源符号个数 { double temp=Pa[i]*2; if(temp>=1) //累加概率乘2大于1时,对应码字加1,累加概率自身取余 { code[i]+="1"; Pa[i]=Pa[i]*2-1; } else //累加概率乘2小于1时,对应码字加0,累加概率自身取余 { code[i]+="0"; Pa[i]*=2; } } for(i=0;i<N;i++) code[i]=code[i].substr(0,K[i]); //求码字 //输出码字 cout<<setw(12)<<"信源"<<setw(12)<<"概率p(x)"<<setw(12)<<"累加概率Pa(x)"<<setw(8)<<"码长K"<<setw(8)<<"码字"<<endl; for(i=0;i<N;i++) cout<<setw(12)<<i+1<<setw(12)<<X[i]<<setw(12)<<Pa[i]<<setw(8)<<K[i]<<setw(8)<<code[i]<<endl; delete []X; delete []Pa; delete []K; delete []code; return 0; }
信息论与编码实验报告
香农编码测试结果截图:
求信息量实验结果截图:
信息论与编码实验报告
费诺编码流程图:
信息论与编码实验报告
费诺编码源程序代码:
//全局变量定义 int n; string *sign; double *p; string *code;
void fano(int a,int b) //费诺编码函数 { if((b-a)>=1) //判断该组中符号个数是否大于2 { double sum=0; for(int i=a;i<=b;i++) sum+=p[i]; //计算该组概率累加和 double s1=0,*s=new double[10]; for(i=a;i<=b;i++) { s1+=p[i];s[i]=fabs(2*s1-sum)/sum; } double min=s[a]; int c; for(i=a;i<=b;i++) if(s[i]<=min) { min=s[i]; c=i; //定位使两组概率和尽可能相近或相等的位置c } for(i=a;i<=b;i++) { if(i<=c) code[i]+="0"; //码字加"0" else code[i]+="1"; //码字加"1" } //判断分组点位置,进而分情况自身调用 if(c==a) fano(c+1,b); else if(c==b-1) fano(a,c); else { fano(a,c);fano(c+1,b); } } }
void main() { cout<<"请输入信源符号个数n:"; cin>>n; p=new double[n]; sign=new string[n];
信息论与编码实验报告
code=new string[n]; cout<<"请依次输入信源符号:"; for(int i=0;i<n;i++) cin>>sign[i]; cout<<"请依次输入信源符号的概率:"; for(i=0;i<n;i++) cin>>p[i]; for(i=0;i<n-1;i++) for(int j=i+1;j<n;j++) if(p[i]<p[j]) { double temp=p[i];p[i]=p[j];p[j]=temp; string m=sign[i];sign[i]=sign[j];sign[j]=m; } fano(0,n-1); //费诺编码 cout<<endl<<endl<<setw(8)<<"信源符号"<<setw(8)<<"概率"<<setw(8)<<"码字"<<setw(8)<<"码长"<<endl; for(i=0;i<n;i++) cout<<setw(8)<<sign[i]<<setw(8)<<p[i]<<setw(8)<<code[i]<<setw(8)<<code[i].length()<<endl; delete []p; delete []sign; delete []code; }
费诺编码测试结果截图:
信息论与编码实验报告
哈弗曼编码流程图:
信息论与编码实验报告
香农编码关键代码:
typedef struct {
int weight; int parent; int lchild; int rchild; }hnodetype; //哈夫曼树节点 typedef struct {
int bit[10]; int position; char sign; }hcodetype; //哈弗曼编码表
void Huffman(char sign[],int m[],int n); / …… 此处隐藏:3387字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




