欢迎来到天天文库
浏览记录
ID:53962750
大小:94.57 KB
页数:7页
时间:2020-04-11
《信息论与编码实验报告 费诺编码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、哈尔滨理工大学荣成学院信息论与编码实验报告——费诺编码班级:电信12-1班姓名:李赛学号:1230160109日期:2015.6.17费诺编码C语言代码:#include#include#includestaticcharp[20][20];voidFano(intm,intn,floaty[20]);main(){inti,j,flag,count,b[20];//count:信源符号个数,b[]:码长floata[20],temp,sum=0.0,l=0.0,H=0.0,y,R;//a[]:输入概率分布l
2、:平均码长H:信源熵y:编码效率R:信源信息率flag=0;//flag:输入概率的判断标志位。为0时表示输入概率有误/************输入信源符号个数并判断是否是正数******************/printf("Pleaseinputtheamountofprobabilities");scanf("%d",&count);while(count<=0){printf("Pleaseinputthepositivenumber!Tryagain!");printf("Pleaseinputtheamountofprobabilities
3、");scanf("%d",&count);}/***************输入信源输入概率并判断*****************/while(flag==0){flag=1;printf("Pleaseinputallprobabilities!");for(i=1;i<=count;i++){scanf("%f",&a[i]);if((a[i]<0)
4、
5、(a[i]>1))//判断单个概率是否小于0或大于1{printf("Pleaseinputthenumberbetween0and1");flag=0;}elsesum=sum+a[i];}
6、if(sum>1.0000001
7、
8、sum<0.9999999)//判断概率和是否大于1或小于0{printf("thesumofallthenumbersis%lfnot1!",sum);flag=0;sum=0.0;}}/************冒泡排序,由大到小***************************/for(i=1;i9、(i=1;i<=count;i++)//求码长{b[i]=strlen(p[i]);}/****************输出编码**********************/printf("Thefanocodeis:");printf("ProbabilityttFanocodettcodelength");for(i=1;i<=count;i++){printf("%.3fttt",a[i]);printf("%sttt%d",p[i],b[i]);}/***************计算平均码长**************10、*****/for(i=1;i<=count;i++){l+=a[i]*b[i];}printf("Theaveragelengthofcodeis:");printf("%5.2fbit/symbol",l);/*****************计算信源熵*********************/for(i=1;i<=count;i++){H+=-a[i]*(log(a[i])/log(2));}printf("Thesourceentropyis:");printf("%5.2fbit/symbol",H);/*******************11、*计算信源信息率*******************/R=l*(log(2)/log(2));printf("Therateoftransportis:");printf("%5.2f",R);/**************计算编码效率(百分制表示)*****************/y=H/R;printf("Thecodingefficiencyis:");printf("%5.2f%%",y*100);}/**********费诺编码子函数**********************/voidFano(intm,intn,floaty[20])/12、/m:各个组的初始点n:
9、(i=1;i<=count;i++)//求码长{b[i]=strlen(p[i]);}/****************输出编码**********************/printf("Thefanocodeis:");printf("ProbabilityttFanocodettcodelength");for(i=1;i<=count;i++){printf("%.3fttt",a[i]);printf("%sttt%d",p[i],b[i]);}/***************计算平均码长**************
10、*****/for(i=1;i<=count;i++){l+=a[i]*b[i];}printf("Theaveragelengthofcodeis:");printf("%5.2fbit/symbol",l);/*****************计算信源熵*********************/for(i=1;i<=count;i++){H+=-a[i]*(log(a[i])/log(2));}printf("Thesourceentropyis:");printf("%5.2fbit/symbol",H);/*******************
11、*计算信源信息率*******************/R=l*(log(2)/log(2));printf("Therateoftransportis:");printf("%5.2f",R);/**************计算编码效率(百分制表示)*****************/y=H/R;printf("Thecodingefficiencyis:");printf("%5.2f%%",y*100);}/**********费诺编码子函数**********************/voidFano(intm,intn,floaty[20])/
12、/m:各个组的初始点n:
此文档下载收益归作者所有