基于matlab的脉冲编码调制的仿真实现 毕业论文

基于matlab的脉冲编码调制的仿真实现 毕业论文

ID:324172

大小:2.61 MB

页数:34页

时间:2017-07-23

上传者:green wind
基于matlab的脉冲编码调制的仿真实现  毕业论文_第1页
基于matlab的脉冲编码调制的仿真实现  毕业论文_第2页
基于matlab的脉冲编码调制的仿真实现  毕业论文_第3页
基于matlab的脉冲编码调制的仿真实现  毕业论文_第4页
基于matlab的脉冲编码调制的仿真实现  毕业论文_第5页
资源描述:

《基于matlab的脉冲编码调制的仿真实现 毕业论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

摘要对脉冲编码调制(PCM)系统的仿真分析,在通信原理教学中会有一定的应用价值。因此本课题结合MATLAB软件的Simulink仿真功能及S-函数的仿真扩展功能,对脉冲编码调制系统进行仿真建模与分析。主要通过编码的采样、欠采样,均匀量化、非均匀量化,A律13折线量化和U律15折线量化的误差比较这几个方面进行仿真与分析,加深我们对脉冲编码调制的理解与认识。关键词:脉冲编码调制(PCM);Simulink仿真;量化误差 AbstractSimulationandanalysisofPulsecodemodulation(PCM)system,Principlesofteachinginthecommunicationwillhaveavalue.Therefore,ThesubjectcombineswiththeSimulinksimulation'sfunctionsandS-functionsimulationofextensionsofMATLABsoftware,Pulsecodemodulationsystemforsimulationmodelingandanalysis.Mainlythroughthecodesample,duetosampling,uniformquantization,non-uniformquantization,Alawquantifyto13lineandUlawquantifyto15linecomparethequantitativeaspectsoferrorsimulationandanalysis,soastodeepenourunderstandingandawarenessonthePulsecodemodulation.Keywords:Pulsecodingmodulation(PCM);Simulinksimulation;Quantizingerror 目录第1章前言1第2章Simulink仿真系统22.1Simulink的简介22.2Simulink的工作环境22.3Simulink的扩展工具S-函数的设计42.3.1S-function的简介42.3.2S-function工作的基本原理42.3.3M文件S-Function的编写6第3章脉冲编码仿真123.1模拟信号抽样的仿真123.2窄脉冲采样的仿真163.3量化183.3.1量化的概念193.3.2均匀量化与非均匀量化的仿真193.3.3A律13折线与U律15折线的量化误差比较24第4章总结28致谢29参考文献30附录31 第1章前言数字通信作为一种新型的通信手段,早于20世纪30年代就提出了。于20世纪40年代,在通信技术中就已经实现了脉冲编码调制(PCM)。PCM系统的优点:抗干扰性强,失真小;传输特性稳定,远距离传输时噪声不累积,而且可以采用有效编码、纠错编码和保密编码来提高通信系统的有效性、可靠性和保密性;灵活性强,能适应各种业务要求;便于与计算机连接。此外,由于PCM可以把各种消息都变换成数字信号进行传输,因此可以实现传输和交换一体化的综合通信方式,也可实现数据传输和数据处理一体化的综合信息处理。所以,它能较好地适应社会信息化的发展要求。PCM系统的缺点:传输带宽宽、系统较复杂等。但是随着数字通信技术的飞速发展,PCM的缺点也不重要。因此,PCM一种极具发展前途的通信方式。PCM包括采样、量化、编码三部分。其中,量化分均匀量化和非均匀量化;PCM编码技术分A律13折线编码和U律15折线编码。本课题是结合MATLAB下的Simulink工具箱对脉冲编码调制技术进行建模仿真和分析。主要包括采样、量化等的仿真,以及对采样与欠采样波形的比较,均匀量化与非均匀量化的量化误差比较,A律13折线与U律15折线量化的误差比较。本课题的主要目的是:在通信原理教学上,使用这种教学方法可以让学生学习PCM技术时更加形象,更加直观,还可以提高教师效率。同时,提高同学对学习通信原理的兴趣。而且,若学校建立通信系统实验室,则需要大量资金的投入。但若是在计算机上直接用MATLAB进行仿真,则可以节省大量资金。此外,最重要的是:实际的通信系统是一个功能结构相当复杂的系统,对这个系统作出的任何改变(如改变了某个参数的设置等)都有可能影响到整个系统的性能和稳定。因此,直接在计算机上进行通信系统仿真实验将会很方便。 第2章Simulink仿真系统2.1Simulink的简介Simulink是MATLAB提供的用于对动态系统进行建模、仿真和分析。Simulink提供了专门用于显示输出信号的模块,可以在仿真过程中随时观察仿真结果。同时,通过Simulink的存储模块,仿真数据可以方便地以各种形式保存到工作空间或文件中,以供用户在仿真结束后对数据进行分析和处理。另外,Simulink把具有特定功能的代码组织模块的方式,并且这些模块可以组织成具有等级结构的子系统,因此,具有内在的模块化设计要求。基于以上优点,Simulink作为一种通用的仿真建模工具,广泛用于通信仿真、数字信号处理、模糊逻辑、神经网络、机械控制和虚拟现实等领域中[1]。2.2Simulink的工作环境当采用Simulink进行建摸和仿真时,一般是从Simulink模型库中提供的模块出发,通过组合各种模块来完成模块的设计。Simulink模型库提供了一种模块的集成环境,通过它可以快速地开发各种仿真模型。1、Simulink模块库在MATLAB的工作区中输入“Simulink”并回车,或单击MATLAB工具栏上的按钮,就进入了Simulink模型库。图2.1是Simulink模块库浏览界面: 图2.1Simulink模块库浏览界面Simulink模块库按功能分为以下16类子模块库[2]:(1)CommonlyUsedBlocks模块库,为仿真提供常用软件;(2)Continuous模块库,为仿真提供连续系统;(3)Discontinutiles模块库,为仿真提供非连续系统软件;(4)Discrete模块库,为仿真提供离散软件;(5)LogicandBitOperations模块库,提供逻辑运算和位运算的软件;(6)LookupTables模块库,线形插值查表模块库;(7)MathOperations模块库,提供数学功能软件;(8)ModelVerification模块库,模型验证库;(9)Model-wideUtilities模块库; (10)Ports&Subsystems模块库,端口和子系统;(11)SignalAttributes模块库,信号属性模块;(12)SignalRouting模块库,提供用于输入、输出和控制的相关信号及相关处理;(13)Sinks模块库,为仿真提供输出设备;(14)Sources模块库,为仿真提供各种信号源;(15)User-definedFunctions模块库,用户自定义函数元件;(16)AdditionalMath&Discrete模块库。2、设计仿真模型在MATLAB主窗口或Simulink模型库的菜单栏中依次选择“File”、“New”、“Model”,就可在MATLAB中生成一个空白的仿真模型窗口。在设计仿真模型的过程中,若Simulink模型库中包含了仿真模型所需的模块,直接把模块拖到仿真模型中即可。若Simulink模型库中没有所需的模块,这时候可以通过S-函数构造自己的模块,并且把这个模块与其它Simulink模块组合起来,实现相应的仿真功能。另外,Simulink模型库中的模块一般具有各种参数设置。从仿真窗口双击模块,弹出该模块的参数设置对话框,这时候可以修改模块中各个参数的数值。2.3Simulink的扩展工具S-函数的设计2.3.1S-function的简介S-函数是系统函数(SystemFunction)的缩写,是一个动态系统的计算机语言描述。在MATLAB中,用户可以选择用M文件编写,也可以用C或MEX文件编写,在这里只介绍用M文件编写S-Function。此外,S-Function提供了扩展Simulimk模块库的有力工具,它采用一种特定的调用方法,实现函数和Simulink解法器之间的交互。S-Function最广泛的用途是定制用户自己的Simulink模块[2]。2.3.2S-function工作的基本原理用户在自己编写S-function之前,了解S-function工作的基本原理是相当有必要的,这对于理解Simulink的整个仿真原理也很有好处。1、S-function的数学模型[1] Simulink模块一共由3个部分组成:输入变量、状态变量和输出变量。其中输出变量又是抽样时间、输入变量和状态变量的函数。如图2.2所示:(输出变量)yx(状态变量)u(输入变量)图2.2Simulink模块的基本元素输入变量、状态变量和输出变量这三者的关系由下列等式给出,即:y=f0(t,x,u)(2.1)假设在某个时刻t,Simulink模块的内部状态由x两部分组成:连续状态xc和离散状态xd,且x=xc+xd则:连续状态的导数(2.2)离散状态(2.3)Simulink根据连续状态导数方程进行积分运算,得到各个连续状态的数值,同时通过离散状态方程计算离散状态的当前值。这样,Simulink就可以得到各个时刻的状态及其输出信号,实现对仿真结果的求解。2、仿真阶段[1]Simulink模块在仿真时的处理过程是按阶段进行的。首先是初始阶段,然后才进入仿真循环,其中经过的每一个小循环被称为一个仿真步。在每个仿真步里,Simulink按照初始化阶段决定的顺序执行模型里的每一个模块。对每一个模块来说,Simulink都要为当前时刻回调计算,更新模块状态函数并进行输出,这个过程将一直持续到仿真结束。仿真流程图如图2.3所示,有两个输出环节和求微分环节,为了提高积分精度,求解器会进行两次输出一致性检查,当有两个输出大于求解器页面所设置的误差限制时,会以一个小的步长重新计算输出和微分。每个仿真循环在最后检查是否有过零事件的发生,一旦检测到过零事件,Simulink 在发生过零事件的变量或者状态的当前值和一个仿真步长之前的值之间进行插值运算,以提高仿真精度。初始化模块计算下一个采样时间(之用于变采样时间模块)积分仿真结束寻找过零点(最小时间步长)在最终时间步清理计算微分值计算输出计算微分值更新离散状态变量计算输出图2.3仿真流程图2.3.3M文件S-Function的编写M文件S-function是采用MATLAB语言编写的,它采用MATLAB中M文件的语法结构,编写代码之后不需要编译就可以直接使用,因而它更加便于编写和使用。 图2.4是M文件S-function模板流程图[1]:flag=0mdlInitializeSizes设置初始条件flag=9mdlTerminateflag=1mdlDerivativesflag=3mdiOutputsflag=2mdiUpdateflag=3mdiOutputsflag=4mdiGetTimerNextVarHit结束仿真时需要进行的工作寻找过零点计算微分值计算输出更新离散状态变量计算输出计算下一个采样时间时间图2.4M文件S-function模板流程图以下是M文件S-function模板sfuntmpl.m的代码[1]:function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%M文件S-函数的主体部分%函数名称:sfuntmp1%主要功能:根据输入参数flag的数值调用相应的函数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% switchflag,case0,%当flag等于0时调用mdlInitializeSizes执行初始化[sys,x0,str,ts]=mdlInitializeSizes;case1,%当flag等于1时调用mdlDerivatives函数计算连续状态的数值sys=mdlDerivatives(t,x,u);case2,%当flag等于2时调用mdlUpdate函数计算离散状态的数值sys=mdlUpdate(t,x,u);case3,%当flag等于3时调用mdlOutdate函数计算输出信号的数值sys=mdlOutputs(t,x,u);case4,%当flag等于4时调用mdlGetTimeOfNextVarHit函数计算下一个抽样时刻sys=mdlGetTimeOfNextVarHit(t,x,u);case9,%当flag等于9时调用mdlTerminate函数结束仿真sys=mdlTerminate(t,x,u);otherwise%当flag等于其它数值时表示仿真过程出错error(['Unhandledflag=',num2str(flag)]);end%endsfuntmp1%=====================================================================%mdlInitializeSizes%S-函数的初始化 %向Simulink返回S-函数各种信号的长度,初始设置和抽样时间设置%=====================================================================function[sys,x0,str,ts]=mdlInitializeSizes%调用simsizes获得一个用于存放长度信息的结构%-1表示动态确定的长度sizes=simsizes;%设置连续状态的个数sizes.NumContStates=0;%设置离散状态的个数sizes.NumDiscStates=0;%设置输出信号的个数sizes.NumOutputs=0;%设置输入信号的个数sizes.NumInputs=0;%设置直接反馈的状态%0表示没有直接反馈%1表示存在直接反馈sizes.DirFeedthrough=0;%设置抽样时间的个数(大于等于1)sizes.NumSampleTimes=1;%通过simsizes把sizes结构返回给syssys=simsizes(sizes);%设置S-函数的初始状态x0x0=[0];%设置S-函数的保留参数str(应该设置为空向量[])str=[];%初始化抽样时间ts=[00];%endmdlInitializeSizes %=====================================================================%mdlDerivatives%计算S-函数连续状态的导数,返回给Simulink进行积分计算%=====================================================================functionsys=mdlDerivatives(t,x,u)%计算S-函数连续昨天的导数并且通过sys参数返回给Simulinksys=[];%endmdlDerivatives%=====================================================================%mdlUpdate%更新S-函数的离散状态并且向Simulink返回这些状态的数值%=====================================================================%functionsys=mdlUpdate(t,x,u)%计算S-函数的离散状态并且通过sys参数返回给Simulinksys=[];%endmdlUpdate%=====================================================================%mdlOutputs%计算S-函数的输出信号并且返回给Simulink作为模块的参数%=====================================================================functionsys=mdlOutputs(t,x,u)%计算S-函数的输出信号并且通过sys参数返回给Simulinksys=[];%endmdlOutputs %=====================================================================%mdlGetTimeOfVarHit%计算S-函数的下一个抽样时刻并且返回给Simulink%本函数只用于可变步长离散时间仿真且在初始化过程中把ts设置为[-20]%=====================================================================functionsys=mdlGetTimeOfNextVarHit(t,x,u)%一个设置下一个抽样时刻的示例%下一个抽样时刻设置为与当前时刻相差1秒sampleTime=1;sys=t+sampleTime;%endmdlGetTimeOfNextVarHit%=====================================================================%mdlTerminate%在仿真结束时执行清理工作,如回收内存等%=====================================================================functionsys=mdlTerminate(t,x,u)%设置返回参数sys为空矩阵[]sys=[];%endmdlTerminate第3章脉冲编码仿真脉冲编码调制(PCM)就是用脉冲码组代表模拟调制信号的采样值,是把模拟信号转换为数字信号的一种脉冲数字调制方式[3]。PCM的原理是 由抽样、量化和编码三个步骤构成。它的功能是完成模-数转换,实现连续消息数字化[4]。其原理图如图3.1所示[5]:噪声f(t)低通滤波译码信道编码量化抽样f(t)图3.1PCM原理图3.1模拟信号抽样的仿真抽样是模拟信号数字化过程的第一步,经过抽样后的信号是时间离散且时间间隔相等的信号,量化和编码都是在它的基础上进行的。在数字通信中,不仅要把模拟信号变成数字信号进行传输,而且在接收端还要将它还原成模拟信号,还原的信号应该与发送端的信号尽可能相同。因此,任何情况下抽样都应该满足抽样定理。即,一个频带限制在(0,fH)赫内的时间连续信号f(t),如果以秒的间隔对它进行等间隔抽样,则f(t)将被所得到的抽样值完全确定[5]。抽样系统图如图3.2所示: 图3.2抽样系统为了观察方便,信源部分由Source模块库中的正弦波模块(SineWave)来代替实际过程中的模拟信号。其参数设置如图3.3所示:图3.3SineWave模块参数设置 抽样过程是用M文件-S函数实现的,实质上是在每一个离散时间点上将输入的连续信号的相关值输出,并有一个时间的延续(其源程序“cy1.m”见附录)。此程序中抽样时间为0.2s。调用S-函数的方法是把S-Function模块的对话框打开,将名称为cy1.m的文件放入S-Functionname中即可,如图3.4所示:图3.4S-Function模块对话框为了观察抽样效果,就要把抽样信号通过一个低通滤波器(LPF)还原出来,与原波形进行比较,LPF的参数设置如图3.5所示;通过示波器观察抽样结果,如图3.6所示: 图3.5AnalogFilterDesign的对话框图3.6示波器由图3.6的还原信号的波形和原始信号的波形可以看出,抽样信号基本上可以无失真的被还原。 3.2窄脉冲采样的仿真在实际过程中,通常只能采用窄脉冲串来实现对信号的采样。低通信号的窄脉冲采样又称平顶采样,它与理想采样所不同的就是,采样脉冲k(t)是周期窄脉冲序列,它可以表示为:(3.1)其中g(t)是宽为τ,高为1的矩形脉冲[6]。根据抽样定理对窄脉冲进行仿真分析,如图3.7所示,为窄脉冲采样仿真系统结构框图,它实现的功能是:通过两个示波器分别观察满足和不满足抽样定理两种情况下的波形图。图3.7采样与欠采样系统 上图以正弦波(SineWave)作为采样系统的信源,以幅度为1占空比为10%的周期窄脉冲序列作为采样脉冲,二者相乘,即可得到采样后的波形。然后通过低通滤波器还原采样后的波形可通过图中的示波器和示波器1观察。如图3.8和3.9所示:图3.8采样波形其中,正弦波产生器中的角频率ω设置为pi,即频率fs=ω/2*pi=0.5Hz;方波产生器的占空比设置为10%,频率fm设置为0.1Hz,作为周期窄脉冲序列。此时,,满足抽样定理。从图中可以看到采样后的波形保持原信号的特征,并且通过低通滤波器(LPF)后基本上能够不失真的还原出原始信号。因此,只要我们知道全部的采样值,就可以确定出唯一的模拟信号。 图3.9欠采样波形其中,正弦波产生器中的角频率ω设置为pi,即频率fs=ω/2*pi=0.5Hz;方波产生器的占空比设置为10%,频率fm设置为0.6Hz,作为周期窄脉冲序列。此时,,不满足抽样定理。由图3.9可知:采样后的波形和还原后的波形严重失真。也就是说,由于采样频率过低,通过低通滤波器还原出来的信号不再是原始信号。而且,采样脉冲宽度越宽,越容易发生失真,也就越容易出现混叠现象。所以说,如果对某一带宽有限的时间连续信号(模拟信号)进行抽样,而且抽样速率达到一定数值(满足抽样定理)时,那么根据这些抽样值就能够准确地确定原始信号。也就是说,如果要传输模拟信号,不一定要传输模拟信号本身,而只传输按抽样定理得到的抽样值即可。 3.3量化3.3.1量化的概念设模拟信号的抽样值为m(kT),其中T是抽样周期,k是正数。此抽样值仍然是一个取值连续的变量,即它可以有无数个可能的连续取值。若我们仅用N个二进制数字码元来代表此抽样值的大小,则N个二进制码元只能代表M=2N不同的抽样值。因此,必须将抽样值的范围分成M个区间,每个区间用一个电平表示。这样共有M个离散电平,它们称为量化电平。用着M个量化电平表示连续抽样值的方法称为量化[4]。3.3.2均匀量化与非均匀量化的仿真1、均匀量化把输入信号取值域按等距离分割的量化称为均匀量化。在均匀量化中,每个量化区间的量化电平均取在各区间的中点。其量化间隔取决于输入信号的变化范围和量化电平数。当信号的变化范围和量化电平数M确定后,量化间隔也被确定了。而且,均匀量化在输入信号幅度不超过工作范围的情况下,量化噪声功率仅与量化级的间距(量化区间)有关,而与其信号功率和概率密度无关。当信号小时,信号量噪比也小。而为了克服这一缺点,在实际中我们往往采用非均匀量化。2、非均匀量化在实际的数字通信系统中,输入信号的幅度都有一定的变化范围,大信号和小信号的差别非常大。如果采用均匀量化,由于量化间隔是一样的,造成了小信号的相对误差很大。而为了使大信号和小信号的信噪比接近,就必须采用非均匀量化基本。思想是量化间隔随信号幅度的不同而不同。在信号幅度大时,量化间隔大,信号幅度小时,量化间隔小。从而保证了在量化级数不变的情况下,量化噪声对不同幅度的信号的影响大致相同,改善小信号的量化信噪比。实际中,非均匀量化实现的方法就是将采样值通过压缩再进行均匀量化。而通常使用的压缩器中,大多采用对数式压缩。广泛采用的两种对数压缩律是A压缩律和U压缩律。美国采用U压缩律,我国和欧洲各国均采用A压缩律[5]。 下面是一个均匀量化与非均匀量化(A律13折线)比较的系统结构框图。该系统不但可以观察均匀量化波形和非均匀量化波形,还能观察并比较它们的量化误差。其系统框图如图3.10所示:图3.10均匀与非均匀量化系统首先,量化过程是由采样量化编码器(Scalarquantizer)来完成的。如图3.11所示,为一个采样量化编码器模块。它有三个输出端口,第一个输出端口输出量化指标,第二个输出端口输出信号的量化电平,第三个输出端口输出信号的量化误差。量化误差是根据输入信号与量化编码器的第二个输出端口的输出信号之差计算得到的均方值,它反映了采样量化编码器对信号的扭曲程度。 >>>>ScalarquantizerSampledQuantizerEncode图3.11采样量化编码器模块及参数设置对话框采样量化编码器主要有以下几个参数:●Quantizationpartition(量化间隔):采样量化编码器的间隔,它是一个长度为n的向量,向量中的元素严格单调递增。●Quantizationcodebook(量化码本):量化编码器的码本,它是一个长度为n+1的向量。●Inputsignalvectorlength(输入信号向量长度):当Inputsignalvectorlength等于1时,输入信号是一个标量;当Inputsignalvectorlength等于n时,输入信号是一个n维向量。●Sampletime(采样时间):输出信号的采样时间间隔。在系统框图3.10中,第一个采样量化编码器(Scalarquantizer)的参数设置为:量化间隔设置为:[-0.75-0.250.250.75]量化码本设置为:[-0.825-0.500.50.825]第二个采样量化编码器(Scalarquantizer)的参数设置为: 量化间隔设置为:[-1/2-1/4-1/8-1/16-1/32-1/64-1/12801/1281/641/321/161/81/41/21]量化码本设置为:[-1-7/8-6/8-5/8-4/8-3/8-2/8-1/801/82/83/84/85/86/87/81]其中第二采样编码器量化间隔分布呈A律13折线特征,所以该模块实现A律13折线非均匀量化功能。仿真完成后,通过示波器(Scope)观察均匀量化与非均匀量化波形,如图3.12所示:图3.12均匀与非均匀量化波形从上图中可以看到:均匀量化后的信号无论大信号还是小信号其量化间隔都相同。而非均匀量化后的信号,对大信号进行压缩而对小信号进行较大的放大。这就相当于把信号的动态范围扩展了。而且,不难看出非均匀量化的波形的更接近原始信号的波形。在均匀量化中,若增大量化级数,减小量化间隔,则量化误差相应的减小,但系统的复杂性大大的增加。因此,我们应该采用非均匀量化的方法来提高小信号的信噪比,又不过多增加量化级[7]。 均匀量化与非均匀量化的误差如图3.13所示:图3.13均匀与非均匀量化误差比较上图中,粉色线表示均匀量化产生的量化误差,黄色线表示非均匀量化产生的量化误差。不难看出非均匀量化产生的量化误差远远小于均匀量化时的量化误差。原因是均匀量化时无论采样值大小如何,量化噪声的均方根值都固定不变。当信号较小时,则信号量化噪声功率比也就很小。这样,对于弱信号时的信号量噪比就难以达到给定的要求。如果放宽量化区间等长度的条件,就可以在较少的限制条件下最小化量化误差。由此产生的量化器在同样的量化电平数目下,其性能要比均匀量化器好得多。 3.3.3A律13折线与U律15折线的量化误差比较下面是A律13折线与U律15折线的量化误差比较的系统框图,如图3.14所示:图3.14A律13折线与U律15折线量化误差比较在此系统中,采用一个正弦信号产生器(SineWave)产生一个正弦信号,这个信号分别通过两个量化编码器,按照A律13折线和U律15折线产生量化输出信号,然后把这两个量化器计算得到的量化误差的均方值通过一个Mux(复用器)输入到Scope(示波器),这时候从示波器上就可以观察到这两种量化编码器产生的量化误差。为了比较量化之前和量化之后的正弦信号,正弦信号产生器和两个量化编码器第二个输出端口的输出信号通过另外一个复用器连接到Scope1(示波器)。 SineWave(正弦信号产生器)的参数设置如表3.1所示:表3.1SineWave的参数设置参数名称参数值模块类型SineWaveSinetypeTimebasedAmplitude1Bias0Frequency(rad/sec)2*piPhase(rad)0Sampletime0A律13折线的参数设置如表3.2所示:表3.2A律13折线量化器的参数设置参数名称参数值模块类型SampledQuantizerEncodeQuantizationpartition[-1/2-1/4-1/8-1/16-1/32-1/64-1/12801/1281/641/321/161/81/41/21]Quantizationcodebook[-1-7/8-6/8-5/8-4/8-3/8-2/8-1/801/82/83/84/85/86/87/81]Inputsignalvectorlength1Sampletime0.001U律15折线的参数设置如表3.3所示:表3.3U律15折线量化器的参数设置参数名称参数值模块类型SampledQuantizerEncodeQuantizationpartition[-127/255-63/255-31/255-15/255-7/255-3/255-1/25501/2553/2557/25515/25531/25563/255127/2551]Quantizationcodebook[-1-7/8-6/8-5/8-4/8-3/8-2/8-1/801/82/83/84/85/86/87/81]Inputsignalvectorlength1Sampletime0.001 图3.15是A律13折线与U律15折线量化误差比较的波形:图3.15A律和U律的量化误差比较图3.15中,黄线表示A律13折线量化器的量化误差,红线表示U律15折线量化器的量化误差。从图中可以看出,当高斯噪声产生器的方差等于0.01时,按照A律13折线进行量化编码产生的量化误差要比采用U律15折线时产生的量化误差小。事实上,U律15折线在处理小信号过程中能够得到更大的量化信噪比,而在处理大信号的过程中则性能要比A律13线差。 图3.16是Scope示波器的运行结果:图3.16示波器波形在图3.16中,scope中的黄颜色线条表示采样之前的正弦信号,红颜色线条表示通过A律13折线量化器之后的信号;scope1中的红颜色线条表示通过U律15折线量化器之后的信号,黄颜色线条表示采样之前的正弦信号。由此可以看到,量化之后的信号与原来的连续信号之间存在着一定的量化误差。同时,A律13折线和U律15折线对大信号的处理方式相似,两者的差别在于对小信号的量化编码方式上。此外,U律15折线下小信号的信号量噪比比A律13折线的大。但对于大信号,U律要比A律差。 第4章总结大学是学会学习的地方,而毕业设计是这种学会学习能力的体现。本次设计的内容:结合MATLAB仿真系统软件对脉冲编码调制(PCM)系统进行分析。PCM编码技术在当今社会应用越来越广泛,技术也越来越成熟,因此对它的研究有很大价值。而且,PCM的原理我们在通信原理这门课程中学过,理解它的原理不是很难,难点在于用MATLAB下的Simulink进行仿真及分析。虽然我们曾经接触过MATLAB,却不深入。因此,我必须从图书馆借相关书籍来帮助我完成这次的设计。刚开始时,遇到了不少麻烦。后来,在师姐与室友以及老师的帮忙下,这些难题迎刃而解了。此次设计的过程,我领悟到了学习、合作和沟通的重要性。最重要的是,本次毕业设计使我们在大学中学到的学习方法得到了实际的训练。 参考文献[1]邵佳,董辰辉.MATLAB/Simulink通信系统建模与仿真实例精讲[M].北京:电子工业出版社.2009[2]王正林,王胜开,陈国顺,王琪.MATLAB/Simulink与控制系统仿真[M].北京:电子工业出版社.2008[3]贺贵明.通信原理概论[M].武汉:华中科技大学出版社.2000[4]樊昌信,曹丽娜.通信原理[M].北京:国防工业出版社.2006[5]王素珍,贺英,汪春梅,王涛,李改梅.通信原理[M].北京:北京邮电大学出版社.2010[6]吴资玉,韩庆文,蒋阳.通信原理[M].北京:电子工业出版社.2008[7]赵静,张瑾,高新科.基于MATLAB的通信系统仿真[M].北京:北京航空航天大学出版社.2007[8]原思聪.MATLAB语言及机械工程应用[M].北京:机械工业出版社.2008[9]邵玉斌.MATLAB/Simulink通信系统建模与仿真实例分析[M].北京:清华大学出版社.2008[10]王华,李有军,刘建存.MATLAB电子仿真与应用教程[M].北京:国防工业出版社.2007 附录cy1.mfunction[sys,x0,str,ts]=cy1(t,x,u,flag)switchflag,%%%%%%%%%%%%%%%%%%%Initialization%%%%%%%%%%%%%%%%%%%%Initializethestates,sampletimes,andstateorderingstrings.case0[sys,x0,str,ts]=mdlInitializeSizes;%%%%%%%%%%%%Outputs%%%%%%%%%%%%%ReturntheoutputsoftheS-functionblock.case3sys=mdlOutputs(t,x,u);%%%%%%%%%%%%%%%%%%%%Unhandledflags%%%%%%%%%%%%%%%%%%%%case{1,2,4,9}sys=[];%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Unexpectedflags(errorhandling)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Returnanerrormessageforunhandledflagvalues.otherwiseerror(['Unhandledflag=',num2str(flag)]);end%endtimestwo %=====================================================================%mdlInnitializeSize%Returnthesizes,initialconditions,andsampletimesfortheS-function.%=====================================================================function[sys,x0,str,ts]=mdlInitializeSizes()sizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=-1;%dynamicallysizedsizes.NumInputs=-1;%dynamicallysizedsizes.DirFeedthrough=1;%hasdirectfeedthroughsizes.NumSampleTimes=1;sys=simsizes(sizes);str=[];x0=[];ts=[0.20];%inheritedsampletime%endmdlInitializeSizes%=====================================================================%mdlOutputs%ReturntheoutputvectorfortheS-function%=====================================================================functionsys=mdlOutputs(t,x,u)sys=u;%endmdlOutputs

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭