ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:135.38KB ,
资源ID:4899871      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4899871.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息论与编码原理课程实验.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

信息论与编码原理课程实验.docx

1、信息论与编码原理课程实验信息论与编码课 程 实 验湖南大学计算机与通信学院 2010年5月1日 课程实验大纲 3实验一 信道容量的迭代算法程序设计.4实验二 唯一可译码判决准则 9实验三 Huffman 编码方案程序设计15实验四 LZW编码方案程序设计 20实验五 Shanoon编码方案程序设计 23实验六 循环码的软件编、译码实验.27实验七 BCH码最大似然译码器设计 31课程实验大纲课程名称实验条件和设备软件包实验地点设备名称实验验收信息论与编码原理C语言软件包湖南大学通信工程实验室计算机学生在自行计算机上完成实验,在由老师组织验收检查报告,在实验周进行统一时间考核。VHDL语言软件包

2、实验项目内容和要求序号实验内容相应软件与实验要求实验一信道容量迭代算法程序设计掌握相应实验原理和算法C语言数值计算程序的设计和调试实验二唯一可译码判决准则程序设计掌握相应实验原理和算法C语言字符串处理程序的设计和调试实验三Huffman编码方案程序设计掌握相应实验原理和算法C语言递归程序的设计调试实验四LZW编码方案程序设计掌握相应实验原理和算法C语言设计和调试中进制转换、数值与字符串之间的转换等技术实验五Shanoon编码方案程序设计掌握相应实验原理和算法C语言设计和调试中进制转换、数值与字符串之间的转换等技术实验六(15、7)循环码一般编、译码电路实现研究掌握相应实验原理和算法工程实现方法

3、研究实验七大数逻辑可译码编、译码算法实现研究掌握相应实验原理和算法工程实现方法研究实验一 信道容量的迭代算法程序设计一、实验目的(1)进一步熟悉信道容量的迭代算法;(2)学习如何将复杂的公式转化为程序;(3)掌握C语言数值计算程序的设计和调试技术。二、实验要求(1)已知:信源符号个数r、信宿符号个数s、信道转移概率矩阵P。(2)输入:任意的一个信道转移概率矩阵。信源符号个数、信宿符号个数和每个具体的转移概率在运行时从键盘输入。(3)输出:最佳信源分布P*,信道容量C。三、信道容量迭代算法 1:procedure CHANNEL CAPACITY(r,s,()2:initialize:信源分布=

4、1/r,相对误差门限,C=3:repeat4:5:6:C 7:until 8:output P*=,C9:end procedure -四、参考代码/*Author: Hop Lee*Date : 2003.06.25*Copyright: GPLPurpose: Caculate the capacity of a given channel*/#include#include#include#include#include#define DELTA 1e -6 /* delta,the threshold */int main( void) register int i,j; regist

5、er int k; int r,s; float *p_i=NULL; float *p_ji=NULL; float *phi_ij=ij=NULL; float C,C_pre,validate; float * sum=NULL; float p_j; /*Read the number of input symbol:r, * and the mumber of output symbol:s*/ fscanf(stdin,%d,&r); fscanf(stdin,%d,&s); /*Allocation memory for p_i,p_ji and phi_ij */ p_i=(f

6、loat *)calloc(r,sizeof(float); p_ji=(float *)calloc(r,sizeof(float); for(i=0;ir;i+) p_jii=(float *)calloc(s,sizeof(float); phi_ij=(float *)calloc(r,sizeof(float*); for(i=0;ir;i+) phi_iji=(float *)calloc(s,sizeof(float) /*Read the channel transition probability matrix p_ji */ for(i=0;ir;i+) for(j=0;j

7、s;j+) fscanf(stdin,%f,&p_jiij); /*Validate the input data */ for(i=0;ir;i+) validate=0.0; for(j=0;jDELTA) fprintf(stdout,invalid input data.n); exit(-1); fprintf(stdout,”Starting.n”); /*initialize the p_i and phi_ij*/ for(i=0;ir;i+) p_ii=1.0/(float)r; /* initialize C and iteration counter :k,and tem

8、prory variable*/C=-MAXFLOAT;/*MAXFLOAT was defined in k=0; sum=(float *)calloc(r,sizeof(float); /*Start iterate*/ do k+; /* Calculate phi_ij(k) first */ for(j=0;js;j+) p_j=0.0; for(i=0;i=DELTA) for(i=0;ir;i+) phi_ijij=p_ii* phi_jiij/p_j; else for(i=0;ir;i+) phi_ijij=0.0; /*calculate p_i(k+1) then*/

9、p_j=0.0; for(i=0;ir;i+) sumi=0.0; for(j=0;j=DELTA) sumi+=p_jiij*log( phi_ijij)/ log(2.0); sumi=pow(2.0,sumi); p_j+=sumi; for(i=0;iDELTA);free(sum); sum=NULL; /*Output the result*/ fprint(stdout,”The iteration number is %d.nn”,k); fprint(stdout,”The capacity of the channel is %.6f bit/symbol.nn”,C);

10、fprint(stdout,”The best input probability distribution is :n”); for(i=0;i=0;i-) free(phi_iji); phi_iji=NULL; free(phi_ij); phi_ij=NULL; for(i=r-1;i=0;i-) free(p_jii); p_jii=NULL; free(p_ji); p_ji=NULL; free(p_i); p_i=NULL; exit(0); 实验二 唯一可译码判决准则一、实验目的 (1)进一步熟悉唯一可译码判决准则; (2)掌握C语言字符串处理程序的设计和调试技术。二、实验要

11、求 (1)已知:信源符号个数q、码字集合C。 (2)输入:任意的一个码。码字个数和每个具体的码字在运行时从键盘输入。 (3)输出:判决(是唯一可译码/不是唯一可译码)。三、唯一可译码判决准则算法 1: procedure U NIQUE D ECODABLE(C)2: for all W,WC do3: if W是W的前缀 then4: 将相应的后缀作为一个尾随后缀码放入集合F中5: end if6: end for7: loop8: for all WC do9: for all WF do10: if W是W的前缀 then11: 将相应的后缀作为一个尾随后缀码放入集合F中12:else

12、if W是W的前缀 then13: 将相应的后缀作为一个尾随后缀码放入集合F中14: end if 15: end for16: end for17: F18: ifWF, WC then19: return False20: else if F 中没有出现新的元素 then21: reture Ture22: end if 23: end loop24: end procedure-四、参考代码/* * Author: Chen Min Ru*Date: 2004.03.16*Copyright:GPL *Purpose : Find out whether a code is unique

13、 decodable or not * # include # include # include # include # include # include # include”ourhdr.h” int scomp(char *C,int n,int *l); void compline(char *C, int cline,char *D, int dline,char *E,int *elinenum); int judge(char *C,int crow,char *E); int erow; int main(void) register int i; int n,l; int

14、*l_i;char *C; /*Read the number of input symbol:n*/ fscanf(stdin,”%d”,&n); /*Allocation memory for l_i and *Ci*/ l_i=(int *)calloc(n,sizeof(int); C=(char *)calloc(n,sizeof(char *); /* Read the code and its length in*/ for (i=0;i=0;i-) free(Ci); free(*C); free(l_i); exit(0); /*Compare C,D and E */ in

15、t scomp(char *C,int n,int *l) int i; int crow,drow; char *D,*E; int *dlinenum,* elinenum; int drownum; /* Allocation soace to dlinenum i and elinenumi*/ dlinenum=(int *)calloc(n,sizeof(int);/* For the first time,D has the same length with C */D = ( char * *)calloc(n,sizeof( char *);for(i = 0;i n;i +

16、 +) dlinenum i = li;Di = ( char *)calloc(li,sizeof( char );drownum = n; /* For the first time ,let D = C */for(i = 0;i n;i + +) strcpy(Di,Ci); /* Compare C and D */compare :erow = 1;E = ( char * * )calloc(n,sizeof( char * );for (i = 0;i n;i + +) Ei = ( char * )calloc(n,sizeof( char );elinenum = ( in

17、t * )calloc(n,sizeof( int);for( crow = 0;crow n;crow +) for( drow = 0;drow drownum;drow +) compline(Ccrow,lcrow,Dcrow, dlinenumdrow,E,elinenum); /* Compare D and C */for( drow = 0;drow drownum;drow +) for( crow = 0;crow = 0;i -) dlinenumi = elinenumi; realloc(Di,dlinenumi); strcpy(Di,Ei); free(Ei);

18、free( *E ); free( elinenum ); goto compare;else for(i = erow 2;i =0;i -) free(Ei); for(i = drownum 1;i = 0;i -) free( Di ); free(*D); free(*E); free(dlinenum); free(elinenum); if(i=1) /* Its NOT unique decodable*/ return 1; else if(i=0)/*Its unique decodable*/ return 0 int judge(char *C,int crow,cha

19、r *E) int i,j; if(ero=1) return 0;/* Stop the processing*/ for(i=0;icrow;i+) for(j=0;jerow-1;j+) if(strcmp(Ci,Ej)=0) return 1;/* Stop the processing*/ return2; void compline(char *C, int cline, char *D, int dline, char *E, int *elinenum) if(clinedline) if(strncmp(C,D,cline)=0) /*Reallocate*/ realloc

20、(E,erow); realloc(elinenum,erow); elinenumeorw -1=dline-cline; realloc(Eerow-1,dline-cline+1); /*Copy the last dline-cline code into E*/ strncpy(Eerow-1,&Dcline,dline-cline+1); erow +; 实验三 Huffman 编码方案程序设计一、实验目的 (1)进一步熟悉Huffman编码过程; (2)掌握C语言递归程序的设计和调试技术。二、实验要求 (1)输入:信源符号个数r、信源的概率分布P; (2)输出:每个信源符号对应的

21、Huffman编码的码字。三、Huffman编码算法描述 1:procedure HUFFMAN(s,p)2:if q=2 then3:return s0,s14:else5: 降序排序p6: 缩减信源:创建一个符号s 以取代s,s,其概率为p=p+p7: 递归调用Huffman算法以得到s,s,s的编码:w,w,w,相应的 概率分布为p,p,p8: return sw0,sw,sw0,sw19: end if10:end procedure-四、参考代码/* *Author : Chen Min Ru *Date: 2004.03.15 *Copyright: GPL *Purpose: H

22、uffman recursive coding algorithm */ # include # include # include # include # define DELTA 1.0e-6 void sort(double *,char *,int *,int); void code(double *,char *,int *,int); intmain(void) float *p_i,*p; float sum; float temp; char *c; int *idx; int q; int i; /* Read the number of source symbol in *

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1