matlab课程设计--循环码的性能分析.docx_第1页
matlab课程设计--循环码的性能分析.docx_第2页
matlab课程设计--循环码的性能分析.docx_第3页
matlab课程设计--循环码的性能分析.docx_第4页
matlab课程设计--循环码的性能分析.docx_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 题目: 循环码的性能分析 初始条件: MATLAB,速率为100Bd的矩形输入信号,AWGN信道要求完成的主要任务: 1、画出编码器输入、输出信号,信道的输出信号,译码器的输出信号的波形、频谱。2、画出误码率与译码器输入信噪比的关系曲线;时间安排:1、 第十三周:查阅资料2、 第十四周:仿真及撰写报告。3、 第十五周:答辩指导教师签名: 2011 年 12 月 15 日系主任(或责任教师)签名: 2011 年 12 月 15 日目录摘要3Abstract41 Matlab简介52 设计项目分析62.1 数字通信系统模型62.2 数字基带系统62.3 AWGN信道72.4 循环码82.5 误码率和信噪比133.matlab建模设计143.1 信源模块143.2 循环码编码153.3 awgn信道加噪163.4循环码译码173.5误码率与信噪比183.6功率谱204.总结23参考文献24附录 程序清单25 摘要循环码是线性分组码中一种重要的编码。它是在严密的代数理论基础上建立起来的。其编码和解码相对简单,但检(纠)错的能力较强。循环码除了具有线性码的一般性质外,还具有循环性。目前发现的大部分线性码与循环码有密切关系,本设计利用MATLAB对信号源序列生成,循环码编解码过程,AWGN信道加噪过程建模,分析各个模块波形与功率谱,并画出误码率与信噪比关系曲线。对仿真数据,波形进行综合分析,达到设计目的。关键词:MATLAB,循环码,AWGN,方波Abstract Cycle code is one of the important code between linear block code,which is built on the base of strict algebraic theory.Its coding and decoding is relatively simple,but takes advantage of error detection and correc-tion.Besides of university of linear block code,cycle code is provided with cyclicity.Most of known linear code is closely related to this code.This design model sequence generating as information source,coding and decoding of cycle code,process of adding noise to information channel all by utilizing MATLAB.Waveform and power spectrum of each module areanalyzed,relation curve of between SNR and error rate is printed. Comprehensive analysis of the simulation waveforms and data leads to accomplishment of purpose for design. Key words:MATLAB,cycle code,AWGN channel,square wave1 Matlab简介 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。主要包括MATLAB和SIMULINK两大部分。MATLABT通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数,函数功能覆盖了现代通信系统的各个方面。这些函数包括:信号源产生函数、信源编码/解码函数、接错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。在纠错控制编解码函数中,函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED-SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。2 设计项目分析2.1 数字通信系统模型数字通信系统(Digital Communication System,DCS)是利用数字信号来传递信息的通信系统,如图2.1所示,数字通信涉及的技术问题很多,其中主要有信源编码与译码、数字调制与解调、同步以及加密与解密等。数字调制信道编码加密信源编码信息源信道数字解调信道译码解密信道译码噪声源受信者 图2.1 数字通信系统模型2.2 数字基带系统在原理上数字信息可以直接用数字代码序列表示和传输,但在实际传输中,视系统的要求和信道情况,一般需要选用不同形式的编码。未经调制的数字信号所占据的频谱是从零频或很低的频率开始,称为数字基带信号。为了匹配信道的特性以获得令人满意的传输效果,需要选择不同的传输波形来表示“0”和“1”。在矩形脉冲中,基本的基带信号波形包括单极性波形,双极性波形,单极性归零波形,双极性归零波形,差分波形,多电平波形等。双极性波形有利于在信道中传输,并且在接收端恢复信号中判决电平为0,因而不受信道特性变化的影响,抗干扰能力也较强,但这不利于对循环码特性的研究,在后面的调试中发现循环码的抗干扰能力已经很强,为了便于观察,选择更为简单的单极性非归零波形,用以突出循环码的作用。 图2.2.1 单极性非归零码波形另一方面,由于数字基带信号是一个随机脉冲序列,没有确定的频谱函数,所以只能用功率谱来描述它的频谱特性。功率谱是随机过程的统计平均概念,平稳随机过程的功率谱是一个确定函数;而频谱是随机过程样本的Fourier变换,对于一个随机过程而言,频谱也是一个“随机过程”。功率谱可以从两方面来定义,一个是自相关函数的傅立叶变换,另一个是时域信号傅氏变换模平方然后除以时间长度。第一种定义就是常说的维纳辛钦定理,而第二种其实从能量谱密度来的。根据parseval定理,信号傅氏变换模平方被定义为能量谱,能量谱密度在时间上平均就得到了功率谱。 图2.2.2 单极性非归零码功率谱2.3 AWGN信道加性高斯白噪声 AWGN(Additive White Gaussian Noise) 是最基本的噪声与干扰模型。加性噪声:叠加在信号上的一种噪声。白噪声:噪声的功率谱密度在所有的频率上均为一常数,则称这样的噪声为白噪声。如果白噪声取值的概率分布服从高斯分布,则称这样的噪声为高斯白噪声。在通信上指的是一种通道模型(channel model),此通道模型唯一的信号减损是来自于宽带的(Bandwidth)线性加成或是稳定谱密度(以每赫兹瓦特的带宽表示)与高斯分布振幅的白噪声 。 2.4 循环码2.4.1循环码原理循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码( Grey Code )。循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若( )为一循环码组,则()、()还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。2.4.2 循环码的多项式表示 设码长为n的循环码表示为(),其中为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n的各个分量看做多项式: 的各项系数,则码字与码多项式一一对应,这种多项式中,x仅表示码元位置的标记,因此我们并不关心x的取值,这种多项式称为码多项式。2.4.3 (n,k)循环码的生成多项式 (n,k)循环码的生成多项式写为g(x),它是(n,k)循环码码集中唯一的,幂次为n-k的码多项式,则是一个幂次为n的码多项式。按模()运算,此时: 即 且因 g(x)也是n阶幂,故Q(x)=1。由于它是循环码,故按模()运算后的“余式”也是循环码的一个码字,它必能被g(x)整除,即: 由以上两式可以得到: 和 从上式中可以看出,生成多项式g(x)应该是的一个因式,即循环码多项式应该是的一个n-k次因式。2.4.4 循环码的生成矩阵和一致校验矩阵对所有的i=0,1,2,k-1,用生成多项式g(x)除,有: 式中是余式,表示为: 因此,是g(x)的倍式,即是码多项式,由此得到系统形式的生成矩阵为: 它是一个kn阶的矩阵。 同样,由G=0可以得到系统形式的一致校验矩阵为: 如已知(7,4)循环码的生成多项式和校验多项式分别为:,。写得其生成矩阵和校验矩阵分别为: 2.4.5 循环码编码原理有信息码构成信息多项式,其中最高幂次为k-1;用乘以信息多项式m(x),得到的,最高幂次为n-1,该过程相当于把信息码(,)移位到了码字德前k个信息位,其后是r个全为零的监督位;用g(x)除得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)于相加,得到的多项式必为一码多项式。根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图1 所示:初始化确定余式r(x): 确定c(x): 存储c(x)图2.4 编码程序框图2.4.6 循环码的纠错原理纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。当码字c通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为: 上式也可以写成多项式形式: 译码器的任务就是从y(x)中得到,然后求的估值码字 并从中得到信息组。循环码译码可按以下三个步骤进行: (1)有接收到的y(x)计算伴随式s(x); (2)根据伴随式s(x)找出对应的估值错误图样; (3)计算,得到估计码字。若,则译码正确,否则,若,则译码错误。由于g(x) 的次数为n - k 次,g(x) 除E(x) 后得余式(即伴随式)的最高次数为n-k-1次,循环码错误图样表:错误图样错误图样码字伴随式S(x)伴随式E6(x)=x61000000x2100E5(x)=x50100000x2+x110E4(x)=x40010000x2+x+1111E3(x)=x30001000x+1011E2(x)=x20000100x2+1101E1(x)=x10000010x010E0(x)=x000000011001E(x)=000000000000表1 BCH(7,4)循环码错误图样表 上式指出了系统循环码的译码方法:将收到的码字R(x) 用g(x) 去除,如果除尽则无错;否则有错。如果有错,可由余式S(x) 一一找出对应图样,然后将错误图样E(x) 与R(x) 模2 和,即为所求码字C(x),从而实现纠错目的。根据前面的讨论,可得(7,4)循环码译码的程序框图如图2.3.1 所示:初始化由R(x)确定S(x):S(x)=0,无误码误码否由S(x)确定错误图样E(x)纠错存储c(x)图2.3.1 译码程序框图2.5 误码率和信噪比 误码率(BER:bit error ratio)是衡量数据在规定时间内数据传输精确性的指标,是衡量一个数字系统可靠性的主要的判断依据。虽然现在手机系统有许多仪器都可以直接对该项作直接的测量,但是对数字对讲机以及新兴的采用新的协议模式的设备,误码率的测试就会比较繁琐。而很多现有的设备都是基于模拟指标的测量,如果能找到模拟的指标与误码率之间的关系,那么将更方便我们的调试。在之前我们已经能直观的能观察到误码率BER 与模拟的信噪比SNR 以及射频中的噪声干扰存在一种相对应的关系。3.程序主体设计3.1 伪随机序列产生模块对于精度要求不高的伪随机序列,可以采用如下函数: rand功能: 生成伪随机数序列。调用格式:randi(imax,m,n)说明:返回一个m*n阶矩阵,m和n都必须是非负整数值,如果m,n任一为负数,将被当做0处理。stairs功能:在matlab中stairs函数用于绘制阶梯状图。调用格式:stairs(X,Y)程序与仿真结果如下:r=3;n=2r-1;k=n-r;sig0=randi(0 1,k*1000,1); figure(2)t=1:length(sig0);stairs(t-1,sig0)axis(0 4*3 min(sig0)-0.5 max(sig0)+0.5)title(编码器输入信号波形) 图3.1 编码器输入信号波形3.2 循环码编码encode功能:完成汉明码,循环码,线性码等的编码调用格式:code = encode(msg,n,k,cyclic/fmt,genpoly)说明:用method指定的方法完成纠错编码。其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。使用如下语句: sig1=encode(sig0,n,k,cyclic)测试结果:输入3组4位序列:000011100101输出3组7位序列:000000010011101000101查表得满足循环码编码规则,仿真结果正确。仿真波形:图3.2 编码器输入输出信号3.3 awgn信道加噪awgn功能:在某一信号中加入高斯白噪声y = awgn(x,SNR) 在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。为便于观察,取snr=10程序段如下:snr=10;sig2=(awgn(sig1,snr)0.5)*1;subplot(4,2,5)t=1:length(sig2);stairs(t-1,sig2)axis(0 7*3 min(sig2)-0.5 max(sig2)+0.5)title(信道输出信号) 仿真波形如图3.3: 图3.3 信道输出信号设置信噪比为10,编码信号加入高斯白噪声后失真严重。足以突出循环码作用。3.4循环码译码decode函数功能:译码函数语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4); 说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。它对接收到的码字,按method指定的方式进行译码;opt1,opt4是可选项的参数。sig3 = decode(sig2,n,k,cyclic);subplot(4,2,7)t=1:length(sig3);stairs(t-1,sig3)axis(0 4*3 min(sig3)-0.5 max(sig3)+0.5)title(译码器输出信号) 仿真结果:图3.4 译码器输出信号波形观察波形得,译码器输出信号波形与编码器输入信号波形相同,符合实际情况。3.5误码率与信噪比symerr功能:计算错误符号的个数和误符号率。调用格式:number,ratio=symerr(x,y)说明number是一个标量或者是一个向量,它指出了x和y两组数据集相比不同符号的个数;ratio为误符号率,它等于number除以总符号数(x和y中较小数)。snr=0.1:0.1:20;ratio=;for var=1:1:200sig2=(awgn(sig1,snr(var)0.5)*1;sig3= decode(sig2,n,k,cyclic);number,ratio(var)=symerr(sig0,sig3)endfigure(2)plot(snr,ratio);title(误码率与信噪比关系曲线) 仿真结果: 图3.5 信噪比与误码率关系曲线3.6频谱计算函数fft功能:一维基2快速傅里叶变换。调用格式:y=fft(x):利用FFT算法计算矢量x的离散傅里叶变换。当x为2的幂次方时,采用高速基2FFT算法,否则为稍慢的混合算法。y=fft(x,N):采用n点FFT。当x的长度小于N时,FFT函数在x的尾部补零,以构成N点数据,当x的长度大于N时,FFT函数在x的尾部截断,以构成N点数据。fftshift功能:对FFT的输出进行重新排列,将零频分量移到频谱的中心。调用格式:y=fftshift(x):对FFT的输出进行重新排列,将零频分量移到频谱的中心。function sigfft(x)% Summary of this function goes here% Detailed explanation goes hereclcN=length(x); %N=512;fs=300;df=100/N;f=(0:length(x)-1)*fs/length(x);plot(f,abs(fftshift(fft(x)/N);%axis(149 151 0 1)end仿真结果: 数字基带信号是一个随机脉冲序列,没有确定的频谱函数,所以只能用功率谱来描述它的频谱特性。功率谱是随机过程的统计平均概念,平稳随机过程的功率谱是一个确定函数;频谱只是随机过程样本的Fourier变换,查阅资料找到另一种表现形式:功率谱密度。函数定义如下:functionf,sf= T2F(t,st) dt = t(2)-t(1); T=t(end); df = 1/T; N = length(st); %f=-N/2*df+df/2:df:N/2*df-df/2;f=-N/2*df:df:N/2*df-df; sf = fft(st); sf = T/N*fftshift(sf); 在序列中插入M-1个0的函数定义如下functionout=sigexpand(d,M) N = length(d); out = zeros(M,N); out(1,:) = d; out = reshape(out,1,M*N); 修改后的功率谱密度函数主要代码:function sigfft(x)clcTs=1; N_sample =100;dt = Ts/N_sample; N = length(x); t = 0:dt:(N*N_sample-1)*dt; T = N*N_sample*dt; gt1 = ones(1,N_sample); data = sigexpand(x,N_sample); st1 = conv(data,gt1); f,st1f = T2F(t,st1(1:length(t); plot(f,abs(st1f).2);%semilogy(f,abs(st1f).2) ; axis(-5 5 0 1000); end功率谱仿真结果如下:4.总结本次课程设计主要使用了MATLAB软件,使我对MATLAB的运用更加熟练。对循环码的设计也使我投入到对课本知识的再一次探讨中去,从不同的角度讲所学应用到实践中去。加深了我对这部分知识的理解,锻炼了对于资料的收集整理运用的能力。对MATLAB自带帮助文档的运用更是提高了我对英语学习重要性的认知。设计初,查阅资料,构建基本模型,完成程序主要流程并成功运行下来耗时一天,这个过程并不漫长,在学校基于MATLAB的DSP实验课上,我积累了一定的基础认知,可以初步简单运用该软件,为这一环节打下了基础。然后接下来日子将重点放在各个模块的精细改进,各种程序之间的优劣,编程效率也纳入自己的考虑之中,这一阶段我忙于对各个部分功能以及网上资料的测试,真正印证了“矩阵实验室”的意义。此阶段耗时最长,收获也最多,改变了平时学习中浮于表面,毛毛躁躁的习惯。撰写报告过程是自己对这次设计的一个完整回顾,又从一个新的角度整理实验数据与资料。将林林总总的实验程序、数据的整合过程中锻炼了自己的综合素质。对于问题的考虑还不够全面,诸如没有备份程序,修改后程序已经面目全非也使自己的心情极为烦躁。克服这些问题其实也可以学到其他方面的知识,终将使自己的能力得到全方位的提高。诚然,自己的设计还有许许多多不完善的地方,各个方面也不一定面面俱到,但总体来讲,过程中的收获大于结果,更是培养了自己对于学习的兴趣。参考文献1樊昌信,曹丽娜,通信原理(第六版),国防工业出版社,2007年出版。2刘泉,阙大顺,郭志刚,数字信号处理原理与实现,电子工业出版社,2009.年出版。3 Vinay K.Ingle,数字信号处理及其MATLAB实现,电子工业出版社,1998年出版。 4 Sanjit K. Miltra,Digital Signal Processing Laboratory Using Matlab,McGraw-Hill出版社,2000年出版。附录 程序清单1. 主程序clcclearclf r=3;n=2r-1;k=n-r;sig0=randi(0 1,k*1000,1); subplot(4,2,1)t=1:length(sig0);stairs(t-1,sig0)axis(0 4*3 min(sig0)-0.5 max(sig0)+0.5)title(编码器输入信号) subplot(4,2,2);sigfft(sig0);title(编码器输入信号功率谱密度) sig1=encode(sig0,n,k,cyclic); subplot(4,2,3) t=1:length(sig1);stairs(t-1,sig1)axis(0 7*3 min(sig1)-0.5 max(sig1)+0.5)title(编码器输出信号波形) subplot(4,2,4);sigfft(sig1);title(编码器输出信号功率谱密度)snr=10;sig2=(awgn(sig1,snr)0.5)*1;subplot(4,2,5)t=1:length(sig2);stairs(t-1,sig2)axis(0 7*3 min(sig2)-0.5 max(sig2)+0.5)title(信道输出信号波形) subplot(4,2,6);sigfft(sig2);title(信道输出信号功率谱密度) sig3,err,ccode,cerr = decode(sig2,n,k,cyclic);subplot(4,2,7)t=1:length(sig3);stairs(t-1,sig3)axis(0 4*3 min(sig3)-0.5 max(sig3)+0.5)title(译码器输出信号波形)subplot(4,2,8);sigfft(sig3);title(译码器输出信号功率谱密度)disp(Transpose of err is); disp(err)disp(Transpose of cerr is); disp(cerr) set(gcf,color,white)2. 误码率与信噪比程序clc sig0=randi(0 1,k*1000,1);sig1=encode(sig0,n,k,cyclic); snr=0.1:0.1:20;ratio=;for var=1:1:200sig2=(awgn(sig1,snr(var)0.5)*1;%endsig3= decode(sig2,n,k,cyclic);number,ratio(var)=symerr(sig0,sig3)endfigure(2)plot(s

温馨提示

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

评论

0/150

提交评论