本文共 564 字,大约阅读时间需要 1 分钟。
编程,对某一离散无记忆信源实现香农编码,输出消息符号及其对应的码字。
设离散无记忆信源, 。二进制香农编码过程如下:1、将信源发出的N个消息符号按其概率的递减次序依次排列。
2、按下式计算第i个消息的二进制代码组的码长,并取整。
3、为了编成唯一可译码,首先计算第i个消息的累加概率
4、将累加概率Pi (为小数)变成二进制数
5、除去小数点,并根据码长li ,取小数点后li 位数作为第i个消息的码字。
Dev
#include#include int main(){ float a[100]={ 0},sum=0,temp,p[100]={ 0},q[100]={ 0}; int i,j,cnt,k[100]={ 0},s[100][100]={ 0}; printf("请输入信源符号个数:"); scanf("%d",&cnt); for(i=0;i 1.0001){ printf("您输入的数据不符合要求,请重新输入:\n"); return 0; } else{ //冒泡排序 for(i=0;i j&&q[i]
转载地址:http://dmfki.baihongyu.com/