信息论与编码实验报告
费诺编码源程序代码:
//全局变量定义 int n; string *sign; double *p; string *code;
void fano(int a,int b) //费诺编码函数 { if((b-a)>=1) //判断该组中符号个数是否大于2 { double sum=0; for(int i=a;i<=b;i++) sum+=p[i]; //计算该组概率累加和 double s1=0,*s=new double[10]; for(i=a;i<=b;i++) { s1+=p[i];s[i]=fabs(2*s1-sum)/sum; } double min=s[a]; int c; for(i=a;i<=b;i++) if(s[i]<=min) { min=s[i]; c=i; //定位使两组概率和尽可能相近或相等的位置c } for(i=a;i<=b;i++) { if(i<=c) code[i]+="0"; //码字加"0" else code[i]+="1"; //码字加"1" } //判断分组点位置,进而分情况自身调用 if(c==a) fano(c+1,b); else if(c==b-1) fano(a,c); else { fano(a,c);fano(c+1,b); } } }
void main() { cout<<"请输入信源符号个数n:"; cin>>n; p=new double[n]; sign=new string[n];
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库信息论与编码实验报告(7)在线全文阅读。
相关推荐: