一、实验目的
编程,对某一离散无记忆信源实现香农编码,输出消息符号及其对应的码字。
设离散无记忆信源,
。二进制香农编码过程如下:
1、将信源发出的N个消息符号按其概率的递减次序依次排列。
2、按下式计算第i个消息的二进制代码组的码长,并取整。
3、为了编成唯一可译码,首先计算第i个消息的累加概率
4、将累加概率Pi (为小数)变成二进制数
5、除去小数点,并根据码长li ,取小数点后li 位数作为第i个消息的码字。
二、实验环境
Dev
三、实验过程:
#include<stdio.h>
#include<math.h>
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("请输入信源符号个数:");