一、实验目的
对某一离散无记忆信源实现费诺编码,输出消息符号及其对应的码字。
设离散无记忆信源
编码过程如下:
1、将信源发出的N个消息符号按其概率的递减次序依次排列。
2、将依次排列的信源符号依概率分成两组,使两个组的概率和近于相同,并对各组赋予一个二进制代码符号“0”和“1”(编m进制 码就分成m组)。
3、将每一个大组的信源符号进一步再分成两组,使划分后的两个组的概率和近于相同,并又分别赋予两组一个二进制符号“0”和“1”
4、如此重复,直至每组值只剩下一个信源符号为止
5、信源符号所对应的码符号序列即为费诺码
二、实验环境
Dev
三、实验过程:
#include<stdio.h>
#include<math.h>
float sum1=0,sum2=0,num[100]= {
0}, a[100]= {
0},sum=0,temp,code[100]= {
0},H=0,k=0;
int i,j,cnt,num1=0,codeside=0,ks[100]= {
0},zj[100]= {
0},zh[100]= {
0},s[100][100]= {
0},K[100]= {
0};
int findPoint(int curPoint,int cnt) {
//找出分界点
int index=curPoint;
for(i