循环码的性能分析_第1页
循环码的性能分析_第2页
循环码的性能分析_第3页
循环码的性能分析_第4页
循环码的性能分析_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉理工大学 matlab《循环码的性能分析》课程设计任务书Matlab 课程设计任务书学生姓名: 专业班级:指导教师: 工作单位:题 目: 循环码的性能分析初始条件:理论方面——电路分析基础、模拟电子、高频电子线路、通信原理、数字信号处理等专业知识设备方面——微型计算机软件方面——matlab仿真平台场地方面——鉴主 15楼通信实验室1要求完成的主要任务:(包括课程设计工作量及其技术要求, 以及说明书撰写等具体要求)理论设计与分析,包括理论的推导和计算过程。制作相应的matlab编制仿真程序,并与理论结果对比,最后得出结论。完成课程设计报告,包括必要的公式、文字/图表说明和仿真结果。时间安排:本课程设计自任务书发布之日开始,分散进行,答辩时间统一武汉理工大学 matlab《循环码的性能分析》课程设计任务书目 录摘要....................................................IAbstract................................................II1.引言...................................................12.设计原理...............................................12.1循环码介绍........................................12.1.1循环码的多项式表示...........................22.1.2(n,k)循环码的生成多项式.....................22.1.3循环码的生成矩阵和一致校验矩阵..............22.2循环码编码原理...................................32.3循环码的纠错原理..................................43程序与仿真.............................................73.1程序函数介绍.......................................73.2各部分程序说明.................................84.总结..................................................145.参考文献.............................................15武汉理工大学 matlab《循环码的性能分析》课程设计任务书摘要循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。关键词:MATLAB 循环码I武汉理工大学 matlab《循环码的性能分析》课程设计任务书AbstractCyclecodeislinearspace-timeblockcodesinthemostimportantofaseed,isthepresentresearchmorematurekindofcode.Cycliccodehasmanyspecialalgebraicproperties,thesepropertiestohelpinaccordancewiththerequirementsoftheerrorcorrectionabilitytoconstructthesystemofthiskindofcode,andsimplifieddecodingalgorithm,andthemostofthelinearcodeandfoundthatthereisacloserelationshipbetweencycliccode.Cycliccodeandiseasytorealizethecharacteristic,iseasytousewiththefeedbacktheshiftregisterrealizeitshardware.Keywords:MATLAB cyclecodeII武汉理工大学 matlab《循环码的性能分析》课程设计任务书引言MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLABT通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数,函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码/解码函数、接错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。以纠错控制编解码函数为例:函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED---SOLOMON)、卷积码等种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。2.设计原理2.1循环码介绍循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码GreyCode)。循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若1武汉理工大学 matlab《循环码的性能分析》课程设计任务书( an1 an2 a1 a0 )为一循环码组,则(an2 an3 a0 an1)、(an3an4 an1 an2) 还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。2.1.1循环码的多项式表示设码长为n的循环码表示为(an1an2aia1a0),其中ai为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n的各个分量看做多项式:n1n2aixni(2—1)Txan1xan2xa1xa0的各项系数,则码字与码多项式一一对应,这种多项式中,x仅表示码元位置的标记,因此我们并不关心 x的取值,这种多项式称为码多项式。2.1.2 (n,k)循环码的生成多项式(n,k)循环码的生成多项式写为 g(x),它是(n,k)循环码码集中唯一的,幂次为n-k的码多项式,则xkg(x)是一个幂次为n的码多项式。按模(xn1)运算,此时:xkg(x)Q(x)R(x)(2—2)nn即xkg(x)R(x)(2—3)k且因xg(x)也是n阶幂,故Q(x)=1。由于它是循环码,故xkg(x)按模(xn1)运算后的“余式”也是循环码的一个码字,它必能被g(x)整除,即:R(x)(2—4)F(x)由以上两式可以得到:g(x)xkg(x)Q(x)(xn1)R(x)(xn1)f(x)g(x)(2—5)和xn1xkf(x)g(x)h(x)g(x)(—)26从上式中可以看出,生成多项式g(x)应该是xn1的一个因式,即循环码多项式应该是xn1的一个n-k次因式。2.1.3循环码的生成矩阵和一致校验矩阵对所有的i=0,1,2,k-1,用生成多项式g(x)除xnki,有:xnkiai(x)g(x)bi(x)(2—7)2武汉理工大学 matlab《循环码的性能分析》课程设计任务书式中bi(x)是余式,表示为:bi(x)bi,nk1xnk1因此,xnkib(x)是g(x)的倍式,即形式的生成阵它是一个kn阶的矩阵。

bi,1xbi,0(2—8)xnk1bi(x)是码多项式,由此得到系统100bk1,nk1bk1,1bk1,0010bk2,nk1bk2,1bkx,0G0 0 0 0 b0,nk1 b0,1 b0,0同样,由G HT=0可以得到系统形式的一致校验矩阵为:bk1,nk1bk2,nk1b0,nk1100H

(2—10)bk1,1bk2,1b0,1010bk1,0bk2,0b0,0001如已知(7,4)循环码的生成多项式和校验多项式分别为:g(x)x3x1,h(x)x4x2x1。写得其生成矩阵和校验矩阵分别为:10110000101100(2—11)G010110000010111110100H0111010(2—12)00111012.2 循环码编码原理有信息码构成信息多项式 m(x) mk1xk1 m0,其中最高幂次为 k-1;用xnk乘以信息多项式m(x),得到的xnkm(x),最高幂次为n-1,该过程相当于把信息码(mk1,mk2,,m1,m0)移位到了码字德前k个信息位,3武汉理工大学 matlab《循环码的性能分析》课程设计任务书其后是r个全为零的监督位;用g(x)除xnkm(x)得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)于xnkm(x)相加,得到的多项式必为一码多项式。根据上面的讨论,可得到在( 7,4)循环码编码的程序框图如图 1所示:初始化确定余式r(x):r(x)m(x)xnk(2—13)g(x)确定c(x): c(x) m(x)xnk r(x) (2—14)错存储c(x)图2.2.1 编码程序框图2.3循环码的纠错原理纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。4武汉理工大学 matlab《循环码的性能分析》课程设计任务书通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用 ARQ通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即CRC校验码。CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过 MODEM传输文件的协议如 ZMODEM、XMODEM 协议中均用到了 CRC校验技术。在磁盘、光盘介质存储技术中也使用该方法。当码字c通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为:yce(2—15)上式也可以写成多项式形式:y(x)c(x)e(x)(2—16)^译码器的任务就是从 y(x)中得到e(x),然后求的估值码字^^c(x)y(x)e(x)(2—17)并从中得到信息组m(x)。循环码译码可按以下三个步骤进行:(1)有接收到的y(x)计算伴随式s(x);(2)根据伴随式s(x)找出对应的估值错误图样 e(x);^ ^ ^(3)计算c(x)y(x)e(x),得到估计码字c(x)。若c(x)c(x),则译^码正确,否则,若c(x)(),则译码错误。cx由于g(x)的次数为n-k次,g(x)除E(x)后得余式(即伴随式)的最高次数为n-k-1次,故S(x)共有2n-k个可能的表达式,每一个表达式对应一个错误格式。可以知道(7,4)循环码的S(x)共有2(7-4)=8个可能的表达式,可根据错误图样表来纠正(7,4)循环码中的一位错误,其伴随式如表1所示。BCH(7,4)循环码错误图样表:5武汉理工大学 matlab《循环码的性能分析》课程设计任务书错误图样错误图样码字伴随式S(x)伴随式E6(x)=x61000000x2100E5(x)=x50100000x2+x110E4(x)=x40010000x2+x+1111E(x)=x30001000x+10113E2(x)=x20000100x2+1101E1(x)=x10000010x010E0(x)=x000000011001E(x)=000000000000表1BCH(7,4)循环码错误图样表上式指出了系统循环码的译码方法:将收到的码字 R(x)用g(x)去除,如果除尽则无错;否则有错。如果有错,可由余式 S(x)一一找出对应图样,然后将错误图样E(x)与R(x)模2和,即为所求码字C(x),从而实现纠错目的。根据前面的讨论,可得( 7,4)循环码译码的程序框图如图 2.3.1所示:初始化由R(x)确定S(x):R(x)/g(x)的余式S(x)=0,无误码误否由S(x)确定错误图样E(x)纠错c(x) E(X) R(X)存储c(x)图2.3.1译码程序框图6武汉理工大学 matlab《循环码的性能分析》课程设计任务书程序与仿真3.1程序函数介绍MATLAB中提供了循环码的编码和译码函数,本程序直接调用进行编程。1)encode函数功能:编码函数语法:code=encode(msg,N,K,method,opt)说明:用method指定的方法完成纠错编码。其中 msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。2)decode函数功能:译码函数语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);说明:这个函数对接收到的码字进行译码, 恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。它对接收到的码字,按method指定的方式进行译码;opt1,,opt4是可选项的参数。3)cyclpoly函数功能:生成循环码的生成多项式。语法:p=cyclpoly(N,K);p=cyclpoly(N,K,fd_flag);说明:从p=cyclpoly(N,K)中可找到一个给定码长 N和信息位长度K生成多项式p,注意不是任意给定一个多项式都可以作为生成多项式。4)randint函数功能:引起一致地分布的任意整数矩阵语法:out=randint(m)out=randint(m,n)out=randint(m,n,rg)7武汉理工大学 matlab《循环码的性能分析》课程设计任务书out=randint(m,n,rg,state)5)awgn函数功能:在某一信号中加入高斯白噪声语法:y=awgn(x,SNR);说明:信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。6)quantiz函数功能:产生一个量化序号和输出量化值。语法:index=quantiz(sig,partition);[index,quantiz]=quantiz(sig,partition,codebook);[index,quant,distor]=quantiz(sig,partition,codebook);说明:这个函数根据给定的区间参数量化信号, 间隔矢量必须按递增顺序排列。3.2各部分程序说明1、循环码编码与解码 Matlab源程序(实验以( 7,4)循环码进行分析)m=3;n=2^m-1;k=n-m;fs=100; %设置采样频率为 100Hzsnr=10; %设置信噪比单位: dBp=cyclpoly(7,4); %(7,4) 循环码生成多项式msg=round(rand(8*k,1)); %设置8个信息组,每组 k个code=encode(msg,n,k, 'cyclic/binary' ,p); %编码输入code_addnoise=awgn(code,snr, 'measured' ); %信道输出%将浮点数转化为 2进制for index=1:length(code)if (code_addnoise(index)<0.5)noisecode(index)=0;8武汉理工大学 matlab《循环码的性能分析》课程设计任务书elsenoisecode(index)=1;endend%译码输出newmsg=decode(noisecode,n,k, 'cyclic/binary' );%求频谱N=length(newmsg);fft_new=fftshift(fft(newmsg,N));f=-fs/2:fs/N:(fs/2-fs/N);%画图输出波形figure(1);subplot(2,2,1);stem(msg);title( '编码器输入信号 ');subplot(2,2,2),stem(code),title( '编码器输出信号 ');subplot(2,2,3),stem(newmsg),title( '译码器输出信号 ');subplot(2,2,4),plot(f,abs(fft_new)/max(abs(fft_new)));xlabel( '频率:Hz' );ylabel( '归一化幅度');title( '译码器输出后频谱图 ');figure(2)plot(code_addnoise),title( '信道输出信号 ');9武汉理工大学 matlab《循环码的性能分析》课程设计任务书误码率m=3;n=2^m-1; %定义码长k=n-m; %信息位长Fs=40; %系统采样频率Fd=1; %码速率N=Fs/Fd;M=2; %进制数for SNR=1:100; %信噪比%制造100个信息组,每组 k位msg=randint(100,k,[0,1]);code=encode(msg,n,k, 'cyclic/binary' );%加入噪声%在已调信号中加入高斯白噪声noisycode=awgn(code,SNR, 'measured' ,[], 'dB' );%将浮点数转化为二进制,波形整形过程for i=1:100for a=1:nif noisycode(i,a)<0.5noisycode(i,a)=0;10武汉理工大学 matlab《循环码的性能分析》课程设计任务书elsenoisycode(i,a)=1;endendend%译码newmsg=decode(noisycode,n,k, 'cyclic' );%计算误码率[number,ratio]=biterr(newmsg,msg);result(SNR)=ratio;disp([ 'Thebiterrorrateis' ,num2str(ratio)]);end%不同信噪比下循环码经过加性高斯白噪声信道的误码率figure(1)stem(result);title('循环码在不同信噪比下的误码率')legend('误码率','*')xlabel('信噪比');ylabel('在加性高斯白噪声下的误码率');运行结果:11武汉理工大学 matlab《循环码的性能分析》课程设计任务书Thebiterrorrateis0.215Thebiterrorrateis0.1825Thebiterrorrateis0.1325Thebiterrorrateis0.1475Thebiterrorrateis0.0975Thebiterrorrateis0.0475Thebiterrorrateis0.0175Thebiterrorrateis0.0125Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis012武汉理工大学 matlab《循环码的性能分析》课程设计任务书Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorrateis0Thebiterrorratei

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论