百度文库1 《信息论课程设计》———实现香农编码、费诺编码信计 0801 班杨兴勃 0808060121 百度文库2 目录百度文库3 香农编码一、课题描述:对于给定的信源的概率分布,按照香农编码的方法进行计算机实现
二、课程设计目的:(1)进一步熟悉香农编码算法;(2)掌握程序设计和调试技术中数值的进制转换、数值愈字符串之间的转换等技术
三、课程设计要求:(1)输入:信源符号个数q 、信源的概率分布P ;(2)输出:每一个信源符号对应的香农编码码字
四、算法分析:2
1、数据结构分别用数组p、q、 k 存放输入的概率,累加概率、码字长度;2
2 、算法基本原理给定某个信源符号的概率分布,通过以下的步骤进行香农编码:1)信源符号按概率从大到小排列;2)对信源符号求累加和,表达式: P i=Pi-1 +p(x i) ;3)求自信息量,确定码字长度
自信息量I(xi)=-log(p(xi)); 码字长度取大于等于自信息量的最小整数;4)将累加和用二进制表示,并取小数点后码字的长度的码
百度文库4 五、香农编码流程图:六、程序设计代码:#include #include #include #include 开始输入符号个数N和相应概率X[i] 按概率由大到小排序按公式求码长求出对应位的概率累加和按乘 2 取余法则, 将累加概率转换为二进制结合求得的对应码长, 将二进制的累加概率取对应长度的作为相应码字输出信源、概率、累加概率、 码长和码字结束百度文库5 using namespace std; void bubble(double *p,int n)//排序{ for(int i=0;i