香农编码实验报告
香浓编码
仙农编码试验报告
一、试验目的
试验仙农编码算法
二、试验步骤
1、输入信源个数n
2、输入n个信源的概率
3、由大到小重新排列信源
4、实现信源概率i+1;j<n;j++){ } if(g[i]<g[j]){ } templ=g[i]; g[i]=g[j]; g[j]=templ;
香浓编码
void add(int n,float *g,float *a){ //a[i]为累加概率的数组
}
void length(int n,float *g,int *k){//求码字的长度k[i]
cout<<endl; cout<<**********计算码长**********<<endl; for(int i=0;i<n;i++){ for(int j=0;j<10;j++){ } float l=-log(g[i])/log(2); int temp=int(l); if(l-temp==0) k[i]=temp; if(j<1-log(g[i])/log(2) j>=-log(g[i])/log(2) ) k[i]=j; cout<<**********累加概率***********<<endl; a[0]=; //令累加概率的第一个值为0 for(int i=1;i<n;i++){ } for(i=0;i<n;i++){ } cout<<第<<i+1<<个累加概率为 <<a[i]<<endl; a[i]=a[i-1]+g[i-1];
香浓编码
}
} cout<<第<<i+1<<个信源的码长为: <<k[i]<<endl;
void XN_Code(int n,float *a,int *k,string *Str){//编码
} else Str[i]+=0; cout<<endl; cout<<**********编码**********<<endl; for(int i=0;i<n;i++){ float s=a[i]; for(int j=0;j<k[i];j++){ //k[i]为码长 s=s*2; if(s>=1){ } Str[i]+=1; s=s-1; }
第 4 页
香农编码实验报告 来自淘豆网m.daumloan.com转载请标明出处.