香农编码实验报告

更新时间:2023-08-13 09:28:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

香浓编码

仙农编码实验报告

一、实验目的

实验仙农编码算法

二、实验步骤

1、输入信源个数n

2、输入n个信源的概率

3、由大到小重新排列信源

4、实现信源概率的叠加

5、计算码长l

6、编码

7、计算平均码长pl、信源熵Hx以及编码效率q

三、源程序:

#include<iostream>

#include<math.h>

#include<string>

using namespace std;

void input(int n,float *g){//输入信源概率

} for(int i=0;i<n;i++){ cout<<"请输入第"<<i+1<<"个信源的概率: "; } cin>>g[i];

香浓编码

void rank(int n,float *g){//重新排列

}

void output(int n,float *g){

}

cout<<endl; cout<<"**********从大到小重新排列后的信源**********"; cout<<endl; for(int i=0;i<n;i++){ } cout<<endl; cout<<"第"<<i+1<<"个信源的概率是:"<<g[i]<<endl; float templ; for(int i=0;i<n;i++){ } for(int j=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.00; //令累加概率的第一个值为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; }

香浓编码

}

} cout<<"第"<<i+1<<"个信源的码字为: "<<Str[i]<<endl;

void main(){

int n,k[10]; float p[10],pa[10],pl=0,Hx=0,q;//pl为平均码长 string Str[10]; cout<<"请输入信源的个数:(小于等于10)"<<endl; cin>>n; input(n,p); //输入信源的概率 rank(n,p); //从小到大重新排列输入的概率 output(n,p); //输出重新排列的概率 add(n,p,pa); //累加概率 length(n,p,k);//求码长 XN_Code(n,pa,k,Str);//编码 for(int i=0;i<n;i++){ //求平均码长 } q=Hx/pl*100; pl+=p[i]*k[i]; Hx=Hx-p[i]*(log(p[i])/log(2));

香浓编码

} cout<<"该信源的信源熵为: "<<Hx<<"比特/符号"<<endl; cout<<"编码效率为:"<<q<<"%"<<endl;

四、运行结果:

香浓编码

本文来源:https://www.bwwdw.com/article/jbij.html

Top