matlab课设循环码的性能分析范文.docx

上传人:b****6 文档编号:15958538 上传时间:2023-07-09 格式:DOCX 页数:24 大小:525.59KB
下载 相关 举报
matlab课设循环码的性能分析范文.docx_第1页
第1页 / 共24页
matlab课设循环码的性能分析范文.docx_第2页
第2页 / 共24页
matlab课设循环码的性能分析范文.docx_第3页
第3页 / 共24页
matlab课设循环码的性能分析范文.docx_第4页
第4页 / 共24页
matlab课设循环码的性能分析范文.docx_第5页
第5页 / 共24页
matlab课设循环码的性能分析范文.docx_第6页
第6页 / 共24页
matlab课设循环码的性能分析范文.docx_第7页
第7页 / 共24页
matlab课设循环码的性能分析范文.docx_第8页
第8页 / 共24页
matlab课设循环码的性能分析范文.docx_第9页
第9页 / 共24页
matlab课设循环码的性能分析范文.docx_第10页
第10页 / 共24页
matlab课设循环码的性能分析范文.docx_第11页
第11页 / 共24页
matlab课设循环码的性能分析范文.docx_第12页
第12页 / 共24页
matlab课设循环码的性能分析范文.docx_第13页
第13页 / 共24页
matlab课设循环码的性能分析范文.docx_第14页
第14页 / 共24页
matlab课设循环码的性能分析范文.docx_第15页
第15页 / 共24页
matlab课设循环码的性能分析范文.docx_第16页
第16页 / 共24页
matlab课设循环码的性能分析范文.docx_第17页
第17页 / 共24页
matlab课设循环码的性能分析范文.docx_第18页
第18页 / 共24页
matlab课设循环码的性能分析范文.docx_第19页
第19页 / 共24页
matlab课设循环码的性能分析范文.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

matlab课设循环码的性能分析范文.docx

《matlab课设循环码的性能分析范文.docx》由会员分享,可在线阅读,更多相关《matlab课设循环码的性能分析范文.docx(24页珍藏版)》请在冰点文库上搜索。

matlab课设循环码的性能分析范文.docx

matlab课设循环码的性能分析范文

课程设计任务书

题目:

循环码的性能分析

初始条件:

MATLAB软件,电脑,通信原理知识

要求完成的主要任务:

输入信号:

速率为100Bd的矩形信号;信道:

AWGN;

要求:

1、画出编码器输入、输出信号,信道的输出信号,译码器的输出信号的波形、频谱

2、画出误码率与译码器输入信噪比的关系曲线;

时间安排:

1、第十三周:

查阅资料

2、第十四周:

仿真及撰写报告。

3、第十五周:

答辩

指导教师签名:

2011年12月15日

系主任(或责任教师)签名:

2011年12月15日

 

摘要

循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。

循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。

循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。

本文只要是利用MATLAB中的SIMULINK通信系统仿真模型库进行循环码建模仿真,并调用通信系统功能函数进行编程,绘制时域波形,频谱及误码率与信噪比关系曲线图。

在此基础上,对循环码的性能进行分析,得出结论。

关键词:

MATLAB循环码SIMULINK性能

 

Abstract

Cyclecodeislinearspace-timeblockcodesinthemostimportantofaseed,isthepresentresearchmorematurekindofcode.Cycliccodehasmanyspecialalgebraicproperties,thesepropertiestohelpinaccordancewiththerequirementsoftheerrorcorrectionabilitytoconstructthesystemofthiskindofcode,andsimplifieddecodingalgorithm,andthemostofthelinearcodeandfoundthatthereisacloserelationshipbetweencycliccode.Cycliccodeandiseasytorealizethecharacteristic,iseasytousewiththefeedbacktheshiftregisterrealizeitshardware.

ThispaperaslongasitisintheuseofMATLABsimulationmodelbasecommunicationsystemSIMULINKcyclecodemodelingsimulation,andcallcommunicationsystemfunctionforprogramming,renderingtimedomainwaveformandspectrumandthebiterrorrateandsignal-to-noiseratiorelationsdiagram.Onthisbasis,thecirculationyardsofperformanceanalysis,drawtheconclusion.

Keywords:

MATLABcyclecodeSIMULINKperformance

 

1引言

MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。

MATLABT通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数,函数功能覆盖了现代通信系统的各个方面。

这些函数包括:

信号源产生函数、信源编码/解码函数、接错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。

以纠错控制编解码函数为例:

函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED---SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。

在SIMULINK通信系统仿真模型库中,整个通信系统的流程图被概括为:

信号的产生与输入、编码与解码、调制与解调。

在SIMULIKE中通信系统仿真的一般模型如图1.1所示。

 

图1通信系统仿真模型

 

2设计原理

2.1循环码介绍

循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。

循环码的编码和解码设备都不太复杂,且检(纠)错能力强。

它不但可以检测随机的错误,还可以检错突发的错误。

(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。

循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。

符合这个特点的有多种方案,但循环码只能是表中的那种。

循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。

这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。

循环码就是这样一种编码,它可以在卡诺图中依次循环得到。

循环码又称格雷码(GreyCode)。

循环码最大的特点就是码字的循环特性,所谓循环特性是指:

循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。

若(

 )为一循环码组,则(

)、(

)……还是许用码组。

也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。

2.1.1循环码的多项式表示

设码长为n的循环码表示为(

),其中

为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n的各个分量看做多项式:

(2—1)

的各项系数,则码字与码多项式一一对应,这种多项式中,x仅表示码元位置的标记,因此我们并不关心x的取值,这种多项式称为码多项式。

2.1.2(n,k)循环码的生成多项式

(n,k)循环码的生成多项式写为g(x),它是(n,k)循环码码集中唯一的,幂次为n-k的码多项式,则

是一个幂次为n的码多项式。

按模(

)运算,此时:

(2—2)

(2—3)

且因

g(x)也是n阶幂,故Q(x)=1。

由于它是循环码,故

按模(

)运算后的“余式”也是循环码的一个码字,它必能被g(x)整除,即:

(2—4)

由以上两式可以得到:

(2—5)

(2—6)

从上式中可以看出,生成多项式g(x)应该是

的一个因式,即循环码多项式应该是

的一个n-k次因式。

2.1.3循环码的生成矩阵和一致校验矩阵

对所有的i=0,1,2,……k-1,用生成多项式g(x)除

,有:

(2—7)

式中

是余式,表示为:

(2—8)

因此,

是g(x)的倍式,即

是码多项式,由此得到系统形式的生成矩阵为:

(2—9)

它是一个k

n阶的矩阵。

同样,由G

=0可以得到系统形式的一致校验矩阵为:

(2—10)

如已知(7,4)循环码的生成多项式和校验多项式分别为:

写得其生成矩阵和校验矩阵分别为:

(2—11)

(2—12)

 

2.2循环码编码原理

有信息码构成信息多项式

,其中最高幂次为k-1;

乘以信息多项式m(x),得到的

,最高幂次为n-1,该过程相当于把信息码(

,……,

)移位到了码字德前k个信息位,其后是r个全为零的监督位;

用g(x)除

得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)于

相加,得到的多项式必为一码多项式。

根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图1所示:

 

 

图2.2.1编码程序框图

 

2.3循环码的纠错原理

纠错码的译码是该编码能否得到实际应用的关键所在。

译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。

根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。

  通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。

用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。

而用于检错目的循环码,一般使用ARQ通信方式。

检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。

用于这种目的的循环码经常被成为循环冗余校验码,即CRC校验码。

CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。

在通过MODEM传输文件的协议如ZMODEM、XMODEM协议中均用到了CRC校验技术。

在磁盘、光盘介质存储技术中也使用该方法。

当码字c通过噪声信道传送时,会受到干扰而产生错误。

如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为:

(2—15)

上式也可以写成多项式形式:

(2—16)

译码器的任务就是从y(x)中得到

,然后求的估值码字

(2—17)

并从中得到信息组

循环码译码可按以下三个步骤进行:

(1)有接收到的y(x)计算伴随式s(x);

(2)根据伴随式s(x)找出对应的估值错误图样

(3)计算

,得到估计码字

则译码正确,否则,若

,则译码错误。

由于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)循环码错误图样表:

错误图样

错误图样码字

伴随式S(x)

伴随式

E6(x)=x6

1000000

x2

100

E5(x)=x5

0100000

x2+x

110

E4(x)=x4

0010000

x2+x+1

111

E3(x)=x3

0001000

x+1

011

E2(x)=x2

0000100

x2+1

101

E1(x)=x1

0000010

x

010

E0(x)=x0

0000001

1

001

E(x)=0

0000000

0

000

表1BCH(7,4)循环码错误图样表

上式指出了系统循环码的译码方法:

将收到的码字R(x)用g(x)去除,如果除尽则无错;否则有错。

如果有错,可由余式S(x)一一找出对应图样,然后将错误图样E(x)与R(x)模2和,即为所求码字C(x),从而实现纠错目的。

根据前面的讨论,可得(7,4)循环码译码的程序框图如图2.3.1所示:

 

3程序与SIMULINK仿真

3.1程序

3.1.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)

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.1.2各部分程序说明

(1)编码程序

m=3;n=2^m-1;k=n-m;

msg=randint(k*4,1,2);%随机提取信号

subplot(2,2.1)

stem(msg)

title('编码器输入信号')

p=cyclpoly(n,k)%循环码生成多项式

code=encode(msg,n,k,'cyclic',p);%对信号进行差错编码

subplot(2,2,2)

stem(code)

title('编码器输出信号')

(2)差错译码程序

recode=decode(code,n,k,'cyclic',p)%对信号进行译码

subplot(2,3,4)

stem(recode)

title('译码器输出信号')

(3)频谱分析程序

t=-1:

0.01:

1;

x=recode;

N=length(x);

fx=fft(x);

df=100/N;

n=0:

N/2;

f=n*df;

subplot(2,3,6);

plot(f,abs(fx(n+1))*2/N);grid;

title('频谱图')

 

3.1.3运行结果

总程序运行结果如下:

p=

10011

Errorrateinthereceivedcode:

0.033333

Errorrateafterdecoding:

0

 

 

图3.1.3.4信道输出信号

图3.1.3.5频谱图

由上面所有的图可以发现,编码器输入信号并不完全相同,因为对信号的提取是随机的,所以码元也是随机的,信号经过编码器后,因为要加入监督码,所以波形变得更加密集了。

信号经过译码后,波形和编码器输入信号大致相同,说明循环码的检错和纠错能力可以。

 

3.2SIMULINK仿真

本系统有信号产生模块、信号循环编码模块、AWGN信道、信号循环译码模块、误码率计算模块组成,在图像观察模块(包括频谱仪和示波器)观察图形。

3.2.1SIMULINK电路图

在设计中,本系统信号产生模块选用了伯努利二进制序列产生器(BernoulliBinaryGenerator)来输出速率为100Bd的随机数字信号,然后进入二进制循环码编码器(BinaryCyclicEncoder)来进行编码,再送进入AWGN信道(加入高斯白噪声)传输,接受信号送入二进制循环码译码器(BinaryCyclicDecoder)进行差错纠正,其后加一误码率计算模块(ErrorRateCalculation)计算误码率。

再用示波器Scope观察波形,用spectrumscope观察频谱。

电路图如图3.2.1所示。

图3.2.1simulink仿真总图

 

3.2.2模块参数设置

 

3.2.3仿真波形

图3.2.3.1编码器输入信号波形

 

 

图3.2.3.2编码器输入频谱

 

图3.2.3.3编码器输出信号波形

图3.2.3.4编码器输出信号频谱

 

图3.2.3.5信道输出信号波形

图3.2.3.6信道输出频谱

 

图3.2.3.7译码器输出信号波形

 

图3.2.3.8译码器输出信号频谱

 

图3.2.3.9SNR=10dB的误码率

 

3.2.4仿真结果分析

由上图结果可知,simulink仿真的结果与matlab程序仿真有所不同,由于simulink的仿真运用是运用各个板块,所以simulink像一个黑匣子,我们无法知道里面的程序是如何,所以没办法得之源程序上有什么问题。

不过有结果依旧可知,循环码可以降低误码率,提高系统抗干扰能力。

 

4小结

在这次基于MATLAB的通信原理课程设计中,我最大的收获是对MATLAB软件的使用有了更深的了解,尤其是simulink仿真板块的运用,更加熟练,此外,对循环码的理论知识有了进一步的认识。

刚拿到题目的时候遇到很多的困难,当时通信原理的理论学习并没有学习到循环码的章节,并且在网上并没能找到很多资源,但是通过查找了大量的循环码理论知识和MATLAB仿真应用的书籍之后,开始调试程序,并进一步了解MATLAB编程的关键字的运用,并且熟悉运用软件simulink、建模仿真、分析,在调试过程中不断出错,查阅资料之后进行不断的修正和更改,得出最终的结果。

这次MATLAB课程设计不仅仅加深了对课程理论知识的了解,并更加熟悉了计算机语言,软件的应用。

并让我了解,学习知识不仅仅只在课本上,还有更多更广的渠道获得更宽广的知识。

 

参考文献

[1]樊昌信,曹丽娜通信原理(第六版).北京:

国防工业出版社,2007.9

[2]徐明远,邵玉斌MATLAB仿真在通信与电子工程中的应用.西安:

西安电子科技大学学出版社,2005.6

[3]唐向宏,岳恒立,郑雪峰MATLAB及在电子信息类课程中的应用(第二版).北京:

电子工业出版社,2009.6

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2