基于Matlab的脉冲编码调制(PCM)系统设计与仿真(2) 下载本文

2012 ~ 2013学年 第 1 学期

《专业综合课程设计》 课 程 设 计 报 告

题 目: 脉冲编码调制(PCM)的实现 专 业: 电子信息工程 班 级: 09电信(2)班 姓 名:

指导教师: 王银花

电气工程系 2012年11月16日

1

1、任务书 课题名称 脉冲编码调制(PCM)的实现 王银花(讲师) 指导教师(职称) 执行时间 学生姓名 设计目的 学号 2012~2013学年第1学期 第11周 承担任务 MATLA简介及程序设计方法 采样、量化和编码原理 PCM抽样的MATLAB实现 PCM量化的MATLAB实现 结合PCM的抽样、量化、编码原理,利用MATLAB软件编程 和绘图功能,完成了对脉冲编码调制(PCM)系统的建模与仿真分析。利用采样、量化和编码原理的建模仿真对脉冲编码调制(PCM)系统原理进行建模与仿真分析。 用仿真软件对其进行验证,使其满足以下要求: (1)实现脉冲编码调制(PCM)技术的三个过程:采样、量化与编码 (2)模拟信号的最高频率限制在4KHZ以内; (3)分别实现64级电平的均匀量化和A压缩率的非均匀量化; (4)按照13折线A律特性编成8位码。 设计要求 2

摘 要

本设计结合PCM的抽样、量化、编码原理,利用MATLAB软件编程和绘图功能,完成了对脉冲编码调制(PCM)系统的建模与仿真分析。课题中主要分为三部分对脉冲编码调制(PCM)系统原理进行建模与仿真分析,分别为采样、量化和编码原理的建模仿真。同时仿真分析了采样与欠采样的波形、均匀量化与A律13折线非均匀量化的量化性能及其差异。通过对脉冲编码调制(PCM)系统原理的仿真分析,设计者对PCM原理及性能有了更深刻的认识,并进一步掌握MATLAB软件的使用。

关 键 词:脉冲编码调制(PCM) 均匀与非均匀量化 MATLAB仿真

3

目 录

摘 要 ....................................................................... 3

第一章 绪论 ............................................................... 5 第二章 MATLAB简介 ........................................................ 5

2.1 MATLAB软件简介 ...................................................... 5 2.2 MATLAB程序设计方法 .................................................. 6

第三章PCM脉冲编码原理 .................................................... 6

3.1 模拟信号的抽样及频谱分析 ............................................ 6 3.1.1 信号的采样 ........................................................ 6 3.1.2 抽样定理 .......................................................... 7 3.1.3 采样信号的频谱分析 ................................................ 7 3.2 量化 ................................................................ 8

3.2.1 量化的定义 ..................................................... 8 3.2.2 量化的分类 ..................................................... 8 3.2.3 MATLAB的A律13折线量化 ...................................... 14 3.3 PCM编码 ............................................................ 15

3.3.1 编码的定义 .................................................... 15 3.3.2 码型的选择 .................................................... 15 3.3.3 PCM脉冲编码的原理 ............................................ 16

第四章 PCM的MATLAB实现 .................................................. 17

4.1 PCM抽样的MATLAB实现 ............................................... 17 4.2 PCM量化的MATLAB实现 ............................................... 21

4.2.1 PCM均匀量化的MATLAB实现 ..................................... 21 4.2.2 PCM A律非均匀量化的MATLAB实现 ............................... 22 4.3 PCM A律13折线编码的MATLAB实现 .................................... 24 参考文献 ................................................................... 27

4

正文

第一章 绪论 数字通信作为一种新型的通信手段,早在20世纪30年代就已经提出。在1937年,英国人里费(A.H.Reeves)提出了脉冲编码调制(PCM)方式。从此揭开了近代数字传输的序幕。PCM系统的优点是:抗干扰性强;失真小;传输特性稳定,远距离再生中继时噪声不累积,而且可以采用有效编码、纠错编码和保密编码来提高通信系统的有效性、可靠性和保密性。另外,由于PCM可以把各种消息(声音、图像、数据等等)都变换成数字信号进行传输,因此可以实现传输和交换一体化的综合通信方式,而且还可以实现数据传输与数据处理一体化的综合信息处理。故它能较好地适应信息化社会对通信的要求。PCM的缺点是传输带宽宽、系统较复杂。但是,随着数字技术的飞跃发展这些缺点也不重要。因此,PCM是一种极有发展前途的通信方式。

第二章 MATLAB简介

2.1 MATLAB软件简介

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。其具有以下特点:友好的工作平台和编程环境;简单易用的程序语言;强大的科学计算机数据处理能力;出色的图形处理功能;应用广泛的模块集合工具箱;实用的程序接口和发布平台;应用软件开发(包括用户界面)。

5

2.2 MATLAB程序设计方法

MATLAB有两种工作方式:一种是交互式的命令行工作方式;另一种是M文件的程序工作方式。在前一种工作方式下,MATLAB被当做一种高级数学演算纸和图形表现器来使用,MATLAB提供了一套完整的而易于使用的编程语言,为用户提供了二次开发的工具,下面主要介绍MATLAB控制语句和程序设计的基本方法。

用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文件。两者区别在于:命令文件没有输入参数,也不返回输出参数;而函数文件可以输入参数,也可以返回输出参数。命令文件对MATLAB工作空间的变量进行操作,而且函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。M文件可以使用任何编辑程序建立和编辑,而一般常用的是使用MATLAB提供的M文件窗口。

首先从MATLAB命令窗口的File菜单中选择New菜单项,在选择M-file命令,将得到的M文件窗口。在M文件窗口输入M文件的内容,输入完毕后,选择此窗口File菜单的save as命令,将会得到save as 对话框。在对话框的File 框中输入文件名,再选择OK按钮即完成新的M文件的建立。

然后在从MATLAB 命令窗口的File 菜单中选择Open对话框,则屏幕出现Open对话框,在Open对话框中的File Name 框中输入文件名,或从右边的directories框中打开这个M文件。在M文件所在的目录,再从File Name 下面的列表框中选中这个文件,然后按OK按钮即打开这个M文件。在M文件窗口可以对打开的M文件进行编辑修改。在编辑完成后,选择File菜单中的Save命令可以把这个编辑过的M文件报存下来。

当用户要运行的命令较多或需要反复运行多条命令时,直接从键盘逐渐输入命令显得比较麻烦,而命令文件则可以较好地解决这一问题。我们可以将需要运行的命令编辑到一个命令文件中,然后再MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。

第三章 PCM脉冲编码原理

3.1 模拟信号的抽样及频谱分析 3.1.1 信号的采样

离散时间信号通常是有连续时间信号经周期采样得到的。完成采样功能的器件称为采样器,下图所示为采样器的示意图。图中Xa(t)表示模拟信号,Xa(nt)表示采样信号,T为采样周期,n=0,1,2,?。一般可以把采样器视为一个每隔T秒闭合一次的电子开关S。在理想情况下,开关闭合时间τ满足τ<

6

图3.1 采样器示意图及波形图

3.1.2 抽样定理

抽样也称取样、采样,是把时间连续的模拟信号变换为时间离散信号的过程。抽样定理是指:一个频带限制在(0,fH)内的时间连续信号m(t),如果以T≤1/2fH秒的间隔对它进行等间隔抽样,则m(t)将被所得到的抽样值完全确定。这意味着,若m(t)的频谱在某一角频率ωH上为零,则m(t)中的全部信息完全包含在其间隔不大于1/2fH秒的均匀抽样序列里。换句话说,在信号最高频率分量的每一个周期内起码应抽样两次。根据抽样脉冲的特性,抽样分为理想抽样、自然抽样(亦称曲顶取样)、瞬时抽样(亦称平顶抽样);根据被抽样信号的性质,抽样又分为低通抽样和带通抽样。虽然抽样种类很多,但是间隔一定时间,抽样连续信号的样值,把信号从时间上离散,这是各种抽样共同的作用,抽样是模拟信号数字化及时分多路的理论基础。

我们考察一个频带限制在(0,fH)赫的信号m(t)。假定将信号m(t)和周期性冲击函数δ(t)相乘,如图所示,乘积函数便是均匀间隔为T秒的冲激序列,这些冲激的强度等于相应瞬时上的m(t)值,它表示对函数m(t)的抽样。我们用ms(t)表示此已抽样的函数,即有

ms(t)=m(t)δ(t)

上述关系如下图所示。

图3.2 抽样示意图

3.1.3 采样信号的频谱分析

频谱分析自然要使用快速傅里叶变换FFT了,对应的命令即 fft ,简单使用方法为:Y=fft(b,N),其中b即是采样数据,N为fft数据采样个数。一般不指定N,即简化为Y=fft(b)。Y即为FFT变换后得到的结果,与b的元素数相等,为复数。以频率为横坐标,Y数组每个元素的幅值为纵坐标,画图即得数据b的幅频特性;以频率为横坐标,Y数组每个元素的角度为纵坐标,画图即得数据b的相频特性。

7

对于现实中的情况,采样频率fs一般都是由采样仪器决定的,即fs为一个给定的常数;另一方面,为了获得一定精度的频谱,对频率分辨率F有一个人为的规定,一般要求F<0.01,即采样时间ts>100秒;由采样时间ts和采样频率fs即可决定采样数据量,即采样总点数N=fs*ts。这就从理论上对采样时间ts和采样总点数N提出了要求,以保证频谱分析的精准度。

3.2 量化

3.2.1 量化的定义

模拟信号进行抽样以后,其抽样值还是随信号幅度连续变化的,即抽样值m(kT)可以取无穷多个可能值,如果用N个二进制数值信号来代表该样值的大小,以便利用数字传输系统来传输该样值的信息,那么N个二进制信号只能同M=2^N个电平样值相对应,而不能同无穷多个电平值相对应。这样一来,抽样值必须被划分成M个离散电平,此电平被称作量化电平。或者说,采用量化抽样值的方法才能够利用数字传输系统来实现抽样值信息的传输。

利用预先规定的有限个电平来表示模拟抽样值的过程称为量化。抽样是把一个时间连续信号变换成时间离散的信号,而量化则是将取值连续的抽样变换成取值离散的抽样。

通常,量化器的输入是随机模拟信号。可以用适当速率对此随机信号m(t)进行抽样,并按照预先规定,将抽样值m(kT)变换成M个电平q1,q2,?,qM之一,有

mq(kTs)=qi,若mi-1≤m(kTs)

(1)按照量化级的划分方式分,有均匀量化和非均匀量化。

均匀量化:把输入信号的取值域按等距离分割的量化称为均匀量化。在均匀量化中,每个量化区间的量化电平在各区间的中点。其量化间隔Δv取决于输入信号的变化范围和量化电平数。当信号的变化范围和量化电平数确定后,量化间隔也被确定。

上述均匀量化的主要缺点是,无论抽样值的大小如何,量化噪声的均方根都固定不变。因此,当信号较小时,则信号量化噪声功率比也就很小,这样,对于弱信号时的信号量噪比就很难达到给定的要求。通常,把满足信噪比要求的输入信号取值范围定义为动态范围。可见,均匀量化是的信号动态范围将受到较大的限制。为了克服这一个缺点,实际中往往采用非均匀量化。

非均匀量化:非均匀量化是根据信号的不同区间来确定量化间隔的。对于信号取值小的区间,其量化间隔也小;反之,量化间隔就大。它与均匀量化相比,有两个突出的优点。首先,当输入量化器的信号具有非均匀分布的概率密度时,非均匀量化器的输出端可以得到较高的平均信号量化噪声功率比;其次,非均匀量化时,量化噪声功率的均方根基本上

8

与信号抽样值成比例。因此量化噪声对大、小信号的影响大致相同,即改善了小信号时的信号量噪比。

常见的非均匀量化有A律和μ率等,它们的区别在于量化曲线不同。 μ压缩律:

所谓μ压缩律就是压缩器的压缩特性具有如下关系的压缩律:

式中y为归一化的压缩器输出电压,x为归一化的压缩器输入电压,μ为压扩参数,表示压缩的程度。

由于上式表示的是一个近似对数关系,因此这种特性也称为近似对数压扩律,其压缩特性曲线如下图所示。由图可知,当μ=0时,压缩特性是通过原点的一条直线,故没有压缩效果;当μ值增大时,压缩作用明显,对改善小信号的性能也有利。一般当μ=100时,压缩器的效果就比较理想了。另外,需指出,μ律压缩特性曲线是以原点奇对称的,图中只画出了正向部分。

图3.3 μ压缩律特性

A压缩律:

所谓A压缩律也就是压缩器具有如下特性的压缩律:

其中,A为压缩系数;y为归一化的压缩器输出电压;x为归一化的压缩器输入电压。图画出了A为某一取值的归一化压缩特性。A律压缩特性是以原点奇对称的,为了简便,图中只给出了正半轴部分。

9

图3.4 A压缩律特性

上图中,x和y都在-1和+1之间,取量化级数为N(在y方向上从-1到+1被均匀划分为N个量化级),则量化间隔为

当N很大时,在每一量化级中压缩特性曲线可看作是直线,因此有

式中,xi为第i个量化级间隔的中间值。 因此

(3.1) 为了使量化信噪比不随信号x变化,也就是说在小信号时的量化信噪比不因x的减小而变小,即应使各量化级间隔与x成线性关系,即

则式3.1可写成

其中k为比例常数。

(3.2) 当量化级数很大时,可以将它看成连续曲线,因而式(3.2)成为线性微分方程

解此微分方程

10

(3.3) 其中c为常数。为了满足归一化要求,当x=1时,y=1,代入式(3.3)可得

故所得结果为

(3.4) 如果压缩特性满足上式,就可获得理想的压缩效果,其量化信噪比和信号幅度无关。满足上式的曲线如下图所示,由于其没有通过坐标原点,所以还需要对它作一定的修改。

图3.5 理想压缩特性曲线

A律压缩特性就是对式(3.4)修改后的函数。在上图中,通过原点作理想压缩特性曲线的切线oc,将oc、cd作为实际的压缩特性。修改以后,必须用两个不同的方程来描述这段曲线,以切点c为分界点,

线段oc的方程:

设切点c的坐标为(x1,y1)斜率为

则由式(3.4)可得

(3.5)

所以线段oc的方程为

11

所以当x=x1时,y1=1/k时,有

因此有

所以,切点坐标为 (exp[-(k-1)],1/k) ,令

将它代入式(3.5),就可得到以切点c为边界的段的方程为

因cd段的方程,满足式(3.4),所以由该式可得

(3.6) (3.7) 由以上分析可见,经过修改以后的理想压缩特性与图5中所示的曲线近似,而式(3.6)式(3.7)和式(3.4)完全一样。

13折线:实际中,A压缩律通常采用13折线来近似,13折线法如图7-4-7所示,图中先把轴的[0,1]区间分为8个不均匀段。

图3.6 13折线示意图

12

其具体分法如下:

a.将区间[0,1]一分为二,其中点为1/2,取区间[1/2,1]作为第八段;

b.将剩下的区间[0,1/2]再一分为二,其中点为1/4,取区间[1/4,1/2]作为第七段; c.将剩下的区间[0,1/4]再一分为二,其中点为1/8,取区间[1/8,1/4]作为第六段; d.将剩下的区间[0,1/8]再一分为二,其中点为1/16,取区间[1/16,1/8]作为第五段; e.将剩下的区间[0,1/16]再一分为二,其中点为1/32,取区间[1/32,1/16]作为第四段; f.将剩下的区间[0,1/32]再一分为二,其中点为1/64,取区间[1/64,1/32]作为第三段; g.将剩下的区间[0,1/64]再一分为二,其中点为1/128,取区间[1/128,1/64]作为第二段; h.最后剩下的区间[0,1/128]作为第一段。然后将y轴的[0,1]区间均匀地分成八段,从第一段到第八段分别为[0,1/8],(1/8,2/8],(2/8,3/8],(3/8,4/8],(4/8,5/8],(5/8,6/8],(6/8,7/8],(7/8,1]。分别与x轴的八段一一对应。采用上述的方法就可以作出由八段直线构成的一条折线,该折线和A压缩律近似,图3.6中的八段线段的斜率分别为:

表1 各段落的斜率

段落 斜率 1 16 2 16 3 8 4 4 5 2 6 1 7 1/2 8 1/4 从上表中可以看出,除一、二段外,其他各段折线的斜率都不相同。图7-4-8中只画出了第一象限的压缩特性,第三象限的压缩特性的形状与第一象限的压缩特性的形状相同,且它们以原点为奇对称,所以负方向也有八段直线,总共有16个线段。但由于正向一、二两段和负向一、二两段的斜率相同,所以这四段实际上为一条直线,因此,正、负双向的折线总共由13条直线段构成,这就是13折线的由来。 从A律压缩特性中可以看出,取A=87.6主要基于下述两个原因:

1 使压缩特性曲线在原点附近的斜率为16;

2 当用13折线逼近时,的八段量化分界点近似为1/2^n(n=0,1,2,?,7)。 从表1可以看出,当要求满足x=1/2^n时,相应有y=1-n/8代入式中,有

因此有

将上式代入式(7.4-16),就可以得到对应A=94.4时的压缩特性

13

(3.8)

此压缩特性如果用13折线逼近,除了第一段落起始点外,其余各段落的分界点的x、y都应满足式(3.8)。在13折线中,第一段落起始点要求的x、y都应该为零,而若按照式(3.8)计算时,当x=0时,y→-∞;而当y=0,x=1/2^8。因此,需要对式(3.8)的压缩特性曲线作适当的修正,我们可以在原点和点(1/2^7,1/8)之间用一段直线代替原来的曲线,这段直线的斜率是1/8÷1/2^7=16。

为了找到一个能够表示修正后的整个压缩特性曲线的方程,将式(3.8)变成

(3.9) 从上式中可以看出,它满足x=0时,y=0;x=1时,y=1。虽然式(3.9)在其他点上会有误差,但x在区间(1/128,1]内,1+255x都能和原来的256x比较接近。所以,在绝大部分范围内的压缩特性仍和A律压缩特性非常接近,只有在x→0的小信号部分和A律压缩特性有些差别。

若在式(3.9)中,令μ=255,则式(3.9)可写成

式(3.10)的压缩特性与μ律压缩特性完全一致。

(3.10) (2)按照量化的维数分,量化分为标量量化和矢量量化。标量量化是一维的量化,一个幅度对应一个量化结果。而矢量量化是二维甚至多维的量化,两个或两个以上的幅度决定一个量化结果。

以二维情况为例,两个幅度决定了平面上的一点。而这个平面事先按照概率已经划分为N个小区域,每个区域对应着一个输出结果(码数,codebook)。由输入确定的那一点落在了哪个区域内,矢量量化器就会输出那个区域对应的码字(codeword)。矢量量化的好处是引入了多个决定输出的因素,并且使用了概率的方法,一般会比标量量化效率更高。 3.2.3 MATLAB的A律13折线量化

在MATLAB中编写程序实现A律对数量化,并输出13折线对数量化特性曲线如图所示,程序见第4章设计内容。

14

图3.7 A律13折线量化特性曲线

3.3 PCM编码 3.3.1 编码的定义

量化后的抽样信号在一定的取值范围内仅有有限个可取的样值,且信号正、负幅度分布的对称性使正、负样值的个数相等,正、负向的量化级对称分布。若将有限个量化样值的绝对值从小到大依次排列,并对应地依次赋予一个十进制数字代码(例如,赋予样值0的十进制数字代码为0),在码前以“+”、“-”号为前缀,来区分样值的正、负,则量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。简单高效的数据系统是二进制码系统,因此,应将十进制数字代码变换成二进制编码。根据十进制数字代码的总个数,可以确定所需二进制编码的位数,即字长。这种把量化的抽样信号变换成给定字长的二进制码流的过程称为编码。

话音PCM的抽样频率为8kHz,每个量化样值对应一个8位二进制码,故话音数字编码信号的速率为8bits×8kHz=64kb/s。量化噪声随量化级数的增多和级差的缩小而减小。量化级数增多即样值个数增多,就要求更长的二进制编码。因此,量化噪声随二进制编码的位数增多而减小,即随数字编码信号的速率提高而减小。自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。 3.3.2 码型的选择

15

常用的二进制码型有自然二进制码和折叠二进制码两种。

折叠码优点:只需对单极性信号进行,再增加最高位来表示信号的极性;小信号的抗噪性能强,大信号的抗噪性能弱。 3.3.3 PCM脉冲编码的原理

若信源输出的是模拟信号,如电话机传送的话音信号,模拟摄象机输出的图像信号等,要使其在数字信道中传输,必须在发送端将模拟信号转换成数字信号,即进行A/D变换,在接收端则要进行D/A。对语音信号最典型的数字编码就是脉冲编码调制(PCM)。

所谓脉冲编码调制:就是将模拟信号的抽样量化值转换成二进制码组的过程。下图给出了脉冲编码调制的一个示意图。

图3.8 脉冲编码调制示意图

假设模拟信号m(t)的求值范围为[-4V,+4V],将其抽样值按8个量化级进行均匀量化,其量化间隔为1s,因此各个量化区间的端点依次为-4、-3、-2、-1、0、1、2、3、4V,8个量化级的电平分别为-3.5、-2.5、-1.5、-0.5、0.5、1.5、2.5和3.5V。

PCM系统的原理方框图如下图所示。图中,输入的模拟信号m(t)经抽样、量化、编码后变换成数字信号,经信道传送到接收端的译码器,由译码器还原出抽样值,再经低通滤波器滤出模拟信号m^(t)。其中,量化与编码的组合通常称为A/D变换器;而译码与低通滤波的组合称为D/A变换。

16

图3.9 PCM通信系统方框图

第四章 PCM的MATLAB实现

4.1 PCM抽样的MATLAB实现

PCM抽样的MATLAB程序设计按如下步骤进行: (1)确定输入的模拟信号为sa(200t);

(2)根据输入的模拟信号,确定抽样频率,对输入信号进行抽样,并将正常抽样和会产生失真的抽样进行对比,对抽样定理加以验证;

(3)编写程序,画出满足采样定理和不满足的时、频域图形。 PCM抽样的MATLAB实现源程序如下: function sample()

t0=10; %定义时间长度 ts=0.001; fs=1/ts;

t=[-t0/2:ts:t0/2]; %定义时间序列 df=0.5; %定义频率分辨率 x=sin(200*t); m=x./(200*t+eps); w=t0/(2*ts)+1; %确定t=0的点

m(w)=1; %修正t=0点的信号值 m=m.*m;

[M,mn,dfy]=fft_seq(m,ts,df); %傅立叶变换 M=M/fs;

f=[0:dfy:dfy*length(mn)-dfy]-fs/2; %定义频率序列 figure(1)

subplot(2,1,1); plot(t,m);

xlabel('时间');ylabel('幅值');title('原始信号(fh=200/2piHz)的波形'); axis([-0.15,0.15,0,1.5]); subplot(2,1,2);

plot(f,abs(fftshift(M)));

xlabel('频率');ylabel('幅值');

axis([-500,500,0,0.03]);title('原始信号的频谱'); t0=10; %信号持续的时间 ts1=0.005; %满足抽样条件的抽样间隔

17

fs1=1/ts1;

t1=[-t0/2:ts1:t0/2]; %定义满足抽样条件的时间序列

x1=sin(200*t1); m1=x1./(200*t1+eps); w1=t0/(2*ts1)+1; m1(w1)=1; %修正t=0时的信号值 m1=m1.*m1; %定义信号

[M1,mn1,df1]=fft_seq(m1,ts1,df); %对满抽样条件的信号进行傅立叶变换 M1=M1/fs1;N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1]; f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1/2; figure(2)

subplot(2,1,1); stem(t1,m1); xlabel('时间');ylabel('幅值');

title('抽样正常(fs=200Hz)时的信号波形');axis([-0.15,0.15,0,1]); subplot(2,1,2)

plot(f1,abs(fftshift(N1)));

xlabel('频率');ylabel('幅值');axis([-500,500,0,0.05]);

title('抽样正常时的信号频谱');axis([-500,500,-0.01,0.03]); t0=10; %信号持续的时间 ts2=0.01; %不满足抽样条件的抽样间隔 fs2=1/ts2;

t2=[-t0/2:ts2:t0/2]; %定义不满足抽样条件的时间序列 x2=sin(200*t2); m2=x2./(200*t2+eps); w2=t0/(2*ts2)+1; m2(w2)=1; %修正t=0时的信号值 m2=m2.*m2; %定义信号

[M2,mn2,df2]=fft_seq(m2,ts2,df);%对不满足抽样条件的信号进行傅立叶变换 M2=M2/fs2;N2=[M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2,M2]; f2=[-7*df2*length(mn2):df2:6*df2*length(mn2)-df2]-fs2/2; figure(3)

subplot(2,1,1); stem(t2,m2);

xlabel('时间');ylabel('幅值');title('抽样失真(fs=100Hz)时的信号波形'); axis([-0.15,0.15,0,1]);subplot(2,1,2) plot(f2,abs(fftshift(N2)));

xlabel('频率');ylabel('幅值');axis([-500,500,0,0.02]);

title('抽样失真时的信号频谱');axis([-500,500,0.005,0.02]); function [M,m,df]=fft_seq(m,ts,df) fs=1/ts;

if nargin==2 n1=0 else

n1=fs/df end

18

n2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2))); M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n PCM抽样仿真结果:

原始信号(fh=200/2piHz)的波形1.51幅值0.50-0.1-0.0500.05时间原始信号的频谱0.10.150.030.02幅值0.010-500-400-300-200-1000频率100200300400500

图4.1 PCM模拟输入信号波形及频谱

19

抽样正常(fs=200Hz)时的信号波形1幅值0.50-0.1-0.0500.05时间抽样正常时的信号频谱0.10.150.030.02幅值0.010-0.01-500-400-300-200-1000频率100200300400500

图4.2 PCM正常抽样时信号的波形及频谱

抽样失真(fs=100Hz)时的信号波形1幅值0.50-0.1-0.0500.05时间抽样失真时的信号频谱0.10.150.020.015幅值0.010.005-500-400-300-200-1000频率100200300400500

图4.3 PCM抽样失真时信号的波形及频谱

20

4.2 PCM量化的MATLAB实现 4.2.1 PCM均匀量化的MATLAB实现

PCM均匀量化的MATLAB程序设计按如下步骤进行: (1)确定输入模拟信号为sin(t);

(2)根据均匀量化的原理均匀量化的算法程序; (3)绘制并比较模拟输入信号与量化输出的波形。

PCM抽样的MATLAB实现源程序如下:

function average() t=[0:0.01:4*pi]; y=sin(t);

w=jylh(y,1,64); subplot(2,1,1); plot(t,y);

xlabel('时间'); ylabel('幅度');

axis([0,4*pi,-1.1,1.1]); title('原始信号'); subplot(2,1,2); plot(t,w);

xlabel('时间'); ylabel('幅度');

axis([0,4*pi,-1.1,1.1]); title('均匀量化后的信号'); function h=jylh(f,V,L) n=length(f);t=2*V/L; p=zeros(1,L+1);

for i=1:L+1,p(i)=-V+(i-1)*t;end for i=1:n

if f(i)>V,h(i)=V;end if f(i)<=-V,h(i)=-V;end flag=0;

for j=2:L/2+1 if(flag==0)

if(f(i)

21

end; end;

for j=L/2+2:L+1 if(flag==0)

if(f(i)

nq=V^2/(3*L^2); 仿真结果:

原始信号10.5幅度0-0.5-102468时间均匀量化后的信号101210.5幅度0-0.5-10246时间81012

图4.4 PCM均匀量化波形

4.2.2 PCM A律非均匀量化的MATLAB实现

PCM A律非均匀量化的MATLAB程序设计按如下步骤进行: (1)确定输入模拟信号;

(2)根据非均匀量化的原理确定A律非均匀量化的算法程序; (3)绘制并比较模拟输入信号与量化输出的波形。

PCM抽样的MATLAB实现源程序如下:

22

function a_quantize() t=0:0.00000125:0.0005; y=sin(8000*pi*t); figure

subplot(2,1,1) plot(t,y)

axis([0 0.0005 -1.2 1.2]) xlabel('时间') ylabel('幅度') title('原始信号') z=a_pcm(y,87.6); subplot(2,1,2) plot(t,z)

axis([0 0.0005 -1.2 1.2]) xlabel('时间') ylabel('幅度')

title('A律量化后的信号') function y=a_pcm(x,a) t=1/a;

for i=1:length(x) if x(i)>=0

if(x(i)<=t)

y(i)=(a*x(i))/(1+log(a)); else

y(i)=(1+log(a*x(i)))/(1+log(a)); end else

if(x(i)>=-t)

y(i)=-(a*-x(i))/(1+log(a)); else

y(i)=-(1+log(a*-x(i)))/(1+log(a)); end end end 仿真结果:

23

原始信号10.5幅度0-0.5-100.511.522.5时间33.544.5x 105-4A律量化后的信号10.5幅度0-0.5-100.511.522.5时间33.544.5x 105-4

图4.5 A律量化波形

4.3 PCM A律13折线编码的MATLAB实现

PCM均匀量化的MATLAB程序设计按如下步骤进行:

(1)确定输入模拟信号;

(2)根据给均匀量化的原理确定非均匀量化的算法程序; (3)将上述编码的十进制数转化成8位二进制数。

PCM抽样的MATLAB实现源程序如下: function a_13code() t=0:0.000025:0.00025; y=sin(8000*pi*t) z=line13(y) c=pcmcode(z)

function y=line13(x) x=x/max(x); z=sign(x); x=abs(x);

for i=1:length(x)

if((x(i)>=0)&(x(i)<1/64)) y(i)=16*x(i); else

24

if((x(i)>=1/64)&(x(i)<1/32)) y(i)=8*x(i)+1/8; else

if((x(i)>=1/32)&(x(i)<1/16)) y(i)=4*x(i)+2/8; else

if((x(i)>=1/16)&(x(i)<1/8)) y(i)=2*x(i)+3/8; else

if((x(i)>=1/8)&(x(i)<1/4)) y(i)=x(i)+4/8; else

if((x(i)>=1/4)&(x(i)<1/2)) y(i)=1/2*x(i)+5/8; else

if((x(i)>=1/2)&(x(i)<=1)) y(i)=1/4*x(i)+6/8; end end end end end end end end y=z.*y;

function f=pcmcode(y) f=zeros(length(y),8); z=sign(y); y=y.*128; y=fix(y); y=abs(y);

for i=1:length(y) if(y(i)==128)

y(i)=127.999; end end

for i=1:length(y) for j=6:-1:0

f(i,8-j)=fix(y(i)/2^j);

25

y(i)=mod(y(i),(2^j)); end end

for i=1:length(y); if(z(i)==1) f(i,1)=0; else

f(i,1)=1; end end

程序运行结果: >> a_13code y =

Columns 1 through 7

0 0.5878 0.9511 0.9511 Columns 8 through 11

-0.9511 -0.9511 -0.5878 -0.0000 z =

Columns 1 through 7

0 0.9045 1.0000 1.0000 Columns 8 through 11

-1.0000 -1.0000 -0.9045 -0.0000 c =

1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 26

0.5878 0.9045 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 0

0.0000 -0.5878 0.0000 -0.9045

参考文献

[1] 樊昌信 曹丽娜,《通信原理第六版》,国防工业出版社,2007

[2] 周开利,《邓春晖主编 MATLAB基础及其应用教程》,北京大学出版社,2007

[3] 董振海,《精通MATLAB 7 编程与数据库应用》,电子工业出版社,2007

[4] 陈怀琛,《MATLAB在电子信息课程中的应用(第二版)》,电子工业出版社,2006

[5] 张德丰主编,《MATLAB通信工程仿真》,机械工业出版社,2010

27

7、答辩记录及评分表 课题名称 答辩教师(职称) 答辩时间 答 辩 记 录 吴慧(讲师)、王银花(讲师) 2012~2013学年第1学期 第11周 学生姓名

评 分 表 学号 28

评分

29