资源描述
通信原理课程设计
引言
通过本课程的学习我们不仅能加深理解和巩固理论课上所学的有关 PCM编码和解码的基本概念、基本理论和基本方法,而且能锻炼我们分析问题和解决问题的能力;同时对我们进行良好的独立工作习惯和科学素质的培养,为今后参加科学工作打下良好的基础。
利用MATLAB集成环境下的Simulink仿真平台,设计一个 PCM编码与解码系统.用示波器观察编码与解码前后的信号波形;加上各种噪声源,或含有噪声的信道,最后根据运行结果和波形来分析该系统性能。
熟悉MATLAB环境下的Simulink仿真平台,熟悉PCM编码与解码原理,构建PCM编码与解码电路图。对模拟信号进行采样、量化、编码(PCM), 将编码后的信号输入信道再进行PCM解码,还原出原信号.建立仿真模型,分析仿真波形。在编码与解码电路间加上噪声源,或者加入含有噪声源的信道,并给出仿真波形。
1 软件介绍
1.1 Matlab介绍
Matlab[1]是一种解释性执行语言,具有强大的计算、仿真、绘图等功能。由于它使用简单,扩充方便,尤其是世界上有成千上万的不同领域的科研工作者不停的在自己的科研过程中扩充Matlab的功能,使其成为了巨大的知识宝库。科研工作者通常可以通过Matlab来学习某个领域的科学知识,这就是Matlab真正在全世界推广开来的原因。目前的Matlab版本已经可以方便的设计漂亮的界面,它可以像VB等语言一样设计漂亮的用户接口,同时因为有最丰富的函数库(工具箱),所以计算的功能实现也很简单,进一步受到了科研工作者的欢迎。另外,Matlab和其他高级语言也具有良好的接口,可以方便的实现与其他语言的混合编程,进一步拓宽了Matlab的应用潜力。可以说,Matlab已经也很有必要成为大学生的必修课之一,掌握这门工具对学习各门学科有非常重要的推进作用。
1.2 Simulink介绍
Simulink[2]是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。
Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。它支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。
2 脉冲编码调制
2.1 PCM简介
现在的数字传输系统都是采用脉码调制(Pulse Code Modulation) 体制。PCM最初并非传输计算机数据用的,而是使交换机之间有一条中继线不是只传送一条电话信号。PCM有两个标准即E1和T1。
我国采用的是欧洲的E1标准。T1的速率是1.544Mbit/s,E1的速率是2.048Mbit/s。 PCM:相变存储器(Phase-change memory,PCM)是由IBM公司的研究机构所开发的一种新型存储芯片,将有望来替代如今的闪存Flash和硬盘驱动器HDD。
PCM在光纤通信系统中,光纤中传输的是二进制光脉冲"0"码和"1"码,它由二进制数字信号对光源进行通断调制而产生。而数字信号是对连续变化的模拟信号进行抽样、量化和编码产生的,称为PCM(pulse code modulation),即脉冲编码调制。这种电的数字信号称为数字基带信号,由PCM电端机产生。
PCM可以向用户提供多种业务,既可以提供从2M到155M速率的数字数据专线业务,也可以提供话音、图象传送、远程教学等其他业务。特别适用于对数据传输速率要求较高,需要更高带宽的用户使用。
PCM线路的特点:
•PCM线路可以提供很高的带宽,满足用户的大数据量的传输。
•支持从 2M开始的各种速率,最高可达155M的速率。
•通过SDH设备进行网络传输,线路协议简单。与传统的DDN技术相比,PCM具有以下特点:
•线路使用费用相对便宜。
•能够提供较大的带宽。
•接口丰富便于用户连接内部网络。
•可以承载更多的数据传输业务。 PCM (动力控制模块):
汽车电控部分,电控单元的动力控制模块,有存储器、输入、输出。
2.2 PCM原理
所谓脉冲编码调制,就是将模拟信号抽样量化,然后将已量化值变换成代码。下面将用一个PCM系统的原理框图简要介绍。原理框图如图2-1所示。
图2-1 PCM原理方框图
在编码器中由冲激脉冲对模拟信号抽样,得到在抽样时刻上的信号抽样值。这个抽样值仍是模拟量。在量化之前,通常由保持电路将其作短暂保存,以便电路有时间对其量化。在实际电路中,常把抽样和保持电路做在一起,称为抽样保持电路。图中的量化器把模拟抽样信号变成离散的数字量,然后在编码器中进行二进制编码。这样每个二进制码组就代表一个量化后的信号抽样值。图中的解码器的原理和编码过程相反。其中,量化与编码的组合称为模/数变换器(A/D变换器);解码与低通滤波的组合称为数/模变换器(D/A变换器)。
抽样是对模拟信号进行周期性的扫描,把时间上连续的信号变成时间上离散的信号。经过抽样的信号应包含原信号的所有信息,即能无失真地恢复出原模拟信号。
量化是把经抽样得到的瞬时值进行幅度离散,即指定Q规定的电平,把抽样值用最接近的电平表示。
编码是用二进制码组表示有固定电平的量化值。实际上量化是在编码过程中同时的。
μ律和A律压缩特性:
试中,x为归一化输入,y为归一化输出,A、μ为压缩系数。
数字压扩技术:一种通过大量的数字电路形成若干段折线, 并用这些折线来近似A律或μ律压扩特性,从而达到压扩目的方法。即对数压扩特性的折线近似法。
折线压扩特性:既不同于均匀量化的直线,又不同于对数压扩特性的光滑曲线。总的来说用折线作压扩特性是非均匀量化的, 但它既有非均匀量化(不同折线有不同斜率), 又有均匀量化(在同一折线的小范围内)。
两种常用数字压扩技术:(1)A律13折线压扩——13折线近似逼近A=87.6的A律压扩特性;(2) μ律15折线压扩——15折线近似逼近μ=255的μ律压扩特性。
采用折线压扩的特点:基本上保持了连续压扩特性曲线的优点,又便于数字电路的实现。
实际中A律常采用13折线近似如图2-2所示:
图2-2 A律13折线
其具体分法如下:
先将X轴的区间[0,1]一分为二,其中点为1/2,取区间[1/2,1]作为第八段; 区间[0,1/2]再一分为二,其中点为1/4,取区间[1/4,1/2]作为第七段; 区间[0,1/4]再一分为二,其中点为1/8,取区间[1/8,1/4]作为第六段; 区间[0,1/8]一分为二,中点为1/16,取区间[1/16,1/8]作为第五段; 区间[0,1/16]一分为二,中点为1/32,取区间[1/32,1/16]作为第四段; 区间[0,1/32]一分为二,中点为1/64,取区间[1/64,1/32]作为第三段; 区间[0,1/64]一分为二,中点为1/128,区间[1/128,1/64]作为第二段; 区间[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轴对应。
编码的码字和码型:
二进制码可以经受较高的噪声电平的干扰,并易于再生,因此PCM中一般采用二进制码。对于Q个量化电平,可以用k位二进制码来表示,称其中每一种组合为一个码字。在点对点之间通信或短距离通信中,采用k=7位码已基本能满足质量要求。而对于干线远程的全网通信,一般要经过多次转接, 要有较高的质量要求,目前国际上多采用8位编码PCM设备。
码型指的是把量化后的所有量化级,按其量化电平的大小次序排列起来,并列出各对应的码字,这种对应关系的整体就称为码型。在PCM中常用的码型有自然二进制码、折叠二进制码和反射二进制码(又称格雷码)。
码位的安排:
目前国际上普遍采用8位非线性编码。例如PCM 30/32路终端机中最大输入信号幅度对应4 096个量化单位(最小的量化间隔称为一个量化单位), 在4 096单位的输入幅度范围内,被分成256个量化级,因此须用8位码表示每一个量化级。用于13折线A律特性的8位非线性编码的码组结构如表2-1所示:
表2-1 8位非线性编码的码组结构
其中,第1位码M1的数值“1”或“0”分别代表信号的正、负极性,称为极性码。从折叠二进制码的规律可知,对于两个极性不同,但绝对值相同的样值脉冲,用折叠码表示时,除极性码M1不同外,其余几位码是完全一样的。因此在编码过程中,只要将样值脉冲的极性判出后,编码器便是以样值脉冲的绝对值进行量化和输出码组的。这样只要考虑13折线中对应于正输入信号的8段折线就行了。这8段折线共包含128个量化级,正好用剩下的7位码(M2,„, M8)就能表示出来。
3 模块设计与仿真图形分析
3.1 Simulink的工作环境熟悉
建立一个很小的系统,用示波器观察正弦信号的平方的波形,如图3-1所示 系统中所需的模块:正弦波模块,示波器模块。
图3-1 正弦仿真电路图
系统内的示波器显示的波形图如下:
图3-2 单正弦波与平方波的对比
结论:两正弦波叠加后的周期是原周期的1/2,频度是原频度的2倍。
3.2 PCM编码器电路设计
图3-2 13折线近似的PCM编码器测试模型
测试模型如图3-4所示。其中以Saturation作为限幅器,将输入信号幅度值限制在PCM编码的定义范围内,以A-Law Compressor作压缩器,Relay模块的门限值设置为0,其输出即可作为PCM编码输出的最高位——极性码。样值取值绝对值后,用增益模块将样值放大到0-127,然后用间隔为1的Quantizer进行四舍五入取整,最后将整数编码为7位二进制序列,作为PCM编码的低7位。可以将上图中Constant和Display(不含)之间的模块封装一个PCM编码子系统备用。
其中各模块参数如下:
Zero-Order Hold :零阶保持器,它的作用是对输入的一段采样时间进行保持。参数设置中的取样时间间隔为信号的取样时间间隔0.001s。
Relay:继电模块,它的作用是实现在两个不同常数值之间进行切换。本设计中此模块的门限值设为0,其输出即可作为PCM编码输出的最高位,也就是极性码,当抽样值为正值时就输出1,为负值时就输出0。
Saturation:限幅器,它的作用是将输入信号的幅度限制在一定范围内。本设计将输入信号幅度限制在[-1,+1]范围内。
Abs:绝对值模块,它的作用是对输入数值取绝对值。
Law Compressor:A率压缩器,它的作用是对输入信号进行A率压缩,
本设计中A取87.6。
Gain:增益模块,它的作用是对数值的大小增加或减小倍数。本设计中由于输入信号幅度限制在[-1,+1],因此为了便于编码将Gain的增益参数设为127。
Quantizer:量化器,它的作用是就是把一个连续幅度值的无限数集合映射成一个离散幅度值。本设计中的量化间隔设为1,可将输入数值根据四舍五入原则量化成相应的离散数值。
Integer to Bit Converter:整数点转换器,它的作用是将整数值转换为相应的二进制数值。本设计中由于量化值最大为127,因此此模块参数设为7,即将十进制整数转换为7位二进制数值。
Mux:复用器,它的作用是将多路信号复用为一路信号。本设计中由于输入信号由1路极值脉冲和1路数值脉冲组成,因此此模块输入参数设为2。
To Frame:装帧器。
Buffer:缓冲器。
Scope:示波器,它的作用是显示输出信号波形。
输出波形如图3-3所示:
图3-3 PCM信号波形
将编码模块封装成子系统后如图3-4所示:
图3-4 封装之后的PCM编码子系统
图3-5 封装之后的PCM编码子系统图标
下面是本设计的 4路PCM信号编码模块:
图3-6 4路PCM信号编码模块
4路模拟信号是幅度均为1,角频率分别为200*pi,150*pi,100*pi和50*pi的正弦信号,抽样时间间隔设为0.001s,符合奈奎斯特抽样定理。4个子系统是PCM编码子系统,Mux模块是信道复用模块,由4路信号输入复用,因此此模块输入参数设为4。
示波器显示的是4路信号复用后的波形,如图3-7所示。
图3-7 4路信号复用后波形
3.3 PCM解码器电路设计
图3-8 13折线近似的PCM解码器测试模型
上图是1路信号的解码模块。其中各个模块的功能和参数设置如下:
Demux:分离器,它的作用是将复用的多路信号分离出来。在此解码模块中信号应分离成一路极性脉冲和7路数值脉冲,因此输出参数设为8。
Mux:复用器。此模块中输入脉冲由7路二进制数值脉冲组成,因此输入参数设为7。
Relay:继电模块,它的作用是确定信号的极性。
Bit to Integer Convertert:位转换器,它的作用是将二进制脉冲转换为十进制数。同编码模块中的Integer to Bit Convertert,此模块参数也设为7。
Gain:增益模块,和编码模块相反,此模块增益参数设为1/127。
A-Law Expander:A率扩展器,它的作用是对输入信号进行A率扩展,此模块中A 设为87.6。
Product:相乘器,它的作用是将极性脉冲和正值数值脉冲相乘以得到有极性的数值。此模块的输入参数设为2。
Analog Filter Design :模拟低通滤波器。它的作用是得到回复原始的模拟信号。此滤波器的最高频率设为250*pi,符合条件,可以恢复原始的模拟信号。
将此解码系统封装成子系统后如图4-9所示:
图3-9 封装之后的PCM解码子系统
图3-10 封装之后的PCM解码子系统图标
下面是本设计的4路PCM解码模块:
图3-11 4路PCM信号解码模块
解码模块是复用信号经过信道后通过Demux模块把各路信号分离出,然后分别进行解码,4个子系统是4路信号的解码模块。由于此复用信号是由4路信号复用而成,因此Demux的输出参数设为4。
3.4 PCM系统总体模块
图3-12 PCM系统总体模块
由于信道中存在噪声可能会影响信号的质量,因此要尽可能增加信道的信噪比降低来降低误码率,本设计中信道误码率概率设为0.01,属于正常的误码率,符合条件。最后输出信号和输入信号通过示波器如图3-13和图3-14所示。
图3-13 1路PCM 信号仿真结果
图中的示波器的波形由两路信号组成,一路是经过编码、信道传输和解码等恢复的模拟信号波形,另一路是原始输入的模拟信号波形,通过观察可知,输出波形和输入波形误差较小,该系统设计正确。
图3-14 4路PCM信号仿真结果
图中的示波器中,上面4路是4路经过编码、信道传输和解码等恢复的4路信号,下面4路是原始的4路输入模拟信号。由图可知,不同频率的信号,所产生的误差用数字信号来传输时误差基本相同。
综上可知,输出信号和输入信号相比,误差较小,因此在正常信噪比的条件下,该通信系统各个模块使用正确,参数设置适当,可以达到预期的目的。
4 PCM的MATLAB实现
4.1 PCM抽样的MATLAB实现
PCM抽样的MATLAB程序设计按如下步骤进行:
(1)确定输入的模拟信号为sa(200t);
(2)根据输入的模拟信号,确定抽样频率,对输入信号进行抽样,并将正常抽样和会产生失真的抽样进行对比,对抽样定理加以验证;
(3)编写程序,画出满足采样定理和不满足的时、频域图形。
PCM抽样的MATLAB仿真程序见附录A。
PCM抽样仿真结果:
图4-1 PCM模拟输入信号波形及频谱
图4-2 PCM正常抽样时信号的波形及频谱
图4-3 PCM抽样失真时信号的波形及频谱
4.2 PCM量化的MATLAB实现
4.2.1 PCM均匀量化的MATLAB实现
PCM均匀量化的MATLAB程序设计按如下步骤进行:
(1)确定输入模拟信号为sin(t);
(2)根据均匀量化的原理均匀量化的算法程序;
(3)绘制并比较模拟输入信号与量化输出的波形。
PCM均匀量化的MATLAB仿真程序见附录B。
仿真结果:
图4-4 PCM均匀量化波形
4.2.2 PCM A律非均匀量化的MATLAB实现
PCM A律非均匀量化的MATLAB程序设计按如下步骤进行:
(1)确定输入模拟信号;
(2)根据非均匀量化的原理确定A律非均匀量化的算法程序;
(3)绘制并比较模拟输入信号与量化输出的波形。
PCM A律非均匀量化的MATLAB仿真程序见附录C。
仿真结果:
图4-5 A律量化波形
4.3 PCM A律13折线编码的MATLAB实现
PCM编码的MATLAB程序设计按如下步骤进行:
(1)确定输入模拟信号;
(2)根据给均匀量化的原理确定非均匀量化的算法程序;
(3)将上述编码的十进制数转化成8位二进制数。
PCM编码的MATLAB仿真程序见附录D。
程序运行结果:
a_13code
y =
Columns 1 through 7
0 0.5878 0.9511 0.9511 0.5878 0.0000 -0.5878
Columns 8 through 11
-0.9511 -0.9511 -0.5878 -0.0000
z =
Columns 1 through 7
0 0.9045 1.0000 1.0000 0.9045 0.0000 -0.9045
Columns 8 through 11
-1.0000 -1.0000 -0.9045 -0.0000
c =
1 0 0 0 0 0 0 0
0 1 1 1 0 0 1 1
0 1 1 1 1 1 1 1
0 1 1 1 1 1 1 1
0 1 1 1 0 0 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 1 1
1 1 1 1 0 0 1 1
1 0 0 0 0 0 0 0
5结果分析
根据仿真的波形图和输出地量化、编码值可以得到以下结论:
当抽样频率大于或等于输入连续信号的频率2倍时,就可以无失真恢复原始信号;当不满足上述条件时就会出现频率混叠失真,不能恢复原始信号。
均匀量化输出波形图清晰地显示处均匀量化的特征,每个量阶都是均匀分布的,每个间隔都是相等的。由于量化级数是64,所以从图中看到的结果不是那么明显,和输入波形相比几乎没什么变化。
将A律非均匀量化的结果和A律13折线近似量化进行比较,两者压缩特性很接近。13折线输出的码组序列也符合要求。
总结
通过本次课程设计,我较系统地掌握有关PCM脉冲编码调制的设计思想和设计方法,主要对MATLAB的仿真方法,开发环境等有了一定的了解并对其进行测试和加以应用的知识得到学习。掌握了用程序对信号进行分析的基本方法,并画出波形图。以前对PCM编码的方法只是在理论上,经过这次课设,加深了对PCM编码的基本原理理解,并对其在实际中的应用有了一定了解。通过这次课设我认识到在以后的学习中,不仅要有刻苦钻研的精神,还要有创新精神,对自己感兴趣的一定要用心去学。
而在本次课程设计在刚开始时,由于对MATLAB的应用不太熟,觉得做起来有些棘手,当发现可以用软件仿真来实现PCM的编码过程后,我便去图书馆查阅了相关书籍,进一步熟悉了MATLAB编程方法和PCM的MATLAB实现原理,这是我最终顺利完成PCM系统设计的前提。随着设计的完成,我也逐渐掌握了PCM编码的工作原理及PCM系统的工作过程,通过应用软件仿真来实现各种通信系统的设计,进一步地,可以完成硬件上的实现,以增强动手能力和学业技能。
总体来说,这次课程设计使我受益匪浅。在摸索该如何设计PCM系统使之实现所需功能的过程中,不仅体验到了动手的乐趣,而且培养了我的设计思维,增加了实际操作能力。在让我体会到设计艰辛的同时,更让我体会到了成功的喜悦。今后,我要更加严格要求自己,主动寻找通信专业方面进行软件仿真及硬件设计的机会,通过实践逐步提升自己的专业技术水平,为今后发展奠定坚实的基础。感谢老师的批阅与指导!我会再接再厉!
附录A:
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; %满足抽样条件的抽样间隔
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
n2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n
31
附录B:
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)<p(j))
h(i)=p(j-1);
flag=1;
end;
end;
end;
for j=L/2+2:L+1
if(flag==0)
if(f(i)<p(j))
h(i)=p(j);
flag=1;
end
end
end
end
nq=V^2/(3*L^2);
附录C:
PCM A律非均匀量化的MATLAB实现源程序如下:
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
附录D:
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
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);
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
参考文献
[1] 樊昌信,曹丽娜,《通信原理第六版》,国防工业出版社,2007
[2] 吴伟陵,续大我,庞沁华.通信原理.北京邮电大学出版社,2005
[3] 张圣勤.MATLAB 7.0实用教程.机械工业出版社,2006
[4] 董振海,精通MATLAB 7 编程与数据库应用.电子工业出版社,2007
[5] 周开利,邓春晖主编. MATLAB基础及其应用教程.北京大学出版社,2007
[6] 邵玉斌 Matlab/Simulink通信系统建模与仿真实例分析.清华大学出版社,2008
目 录
第一章 总论 1
第一节 项目背景 1
第二节 项目概况 2
第二章 项目建设必要性 5
第三章 市场分析与建设规模 7
第一节 汽车市场需求分析 7
第二节 市场预测 12
第三节 项目产品市场分析 13
第四节 建设规模 16
第
展开阅读全文