数字信号的量化

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于MATLAB的数字信号量化的仿真一基本原理1.量化原理模拟信号抽样后变成在时间上离散的信号,但仍然是模拟信号。这个抽样抽样信号必须经过量化才成为数字信号。我们将在下面讨论模拟抽样信号的量化。设模拟信号的抽样值为m(kT)其中T是抽样周期,k是整数。此抽样值仍然是一个取值连续的变量,即它可以有无数个可能的连续取值。若我们仅用N个二进制数字码元来代表此抽样值的大小,则N个二进制码元只能代表M等于2的N次方各不同的抽样值。因此,必须将抽样值的范围划分为M个区间,每个区间用电平表示。这样共有M个离散电平,它们称为量化电平。用这M个量化电平表示连续抽样值的方法称为量化。在图9—9中给出了一个量化过程的例子。图中,m(kT)表示模拟信号抽样值,mq(kT)表示量化后的量化信号值,q1,q2,q3…….q6是量化后的6个可能输出电平,m1,m2,m3,。。。。。。m6,为量化区间的端点,这样,我们可以用公式mq(kT)=qi,当m(i-1)=m(kT)m(i)按照式子做交换,就把模拟抽样信号m(kT)变换成了量化后的离散抽样信号,即是,量化信号。在原理上,量化过程可以认为是在一个量化器中完成的。量化器的输入信号为m(kT),输出信号为mq(kT),如图所示,量化过程常是和后续的编码过程结合在一起的,不一定存在独立的量化器。1二设计过程2.1MATLAB编程简介MATLAB作为一种应用最广泛的科学计算软件,它不仅可以在命令行中逐行输入命令,然后依次执行,而且还可以像C、FORTRAN等高级语言一样进行程序设计,然后利用断点等调试手段进行程序设计和调试。MATLAB的程序设计就是进行M文件的设计。MATLAB程序设计既有传统高级语言的特征,又有自己独特地特点。在MATLAB程序设计中,充分利用MATLAB数据结构的特点,可以使程序结构简单,提高编程效率。2M文件概述:MATLAB不仅是一个功能强大的工具软件,而且可以被理解为一种编程语言。MATLAB软件本身就是MATLAB语言的编程环境。MATLAB本身具有很多强大的函数,实际上M文件就是一个命令集。所谓M文件就是由MATLAB语句(命令或函数)构成的ASCII码文本文件,文件名必须以“.m”2为扩展名。主要有两种形式:命令文件(ScriptFile)和函数文件(FunctionFile)。命令文件与批处理文件相似,它是MATLAB命令或函数的组合,没有输入输出参数,执行时只需在命令中键入文件名回车即可;而函数文件是以一条function语句作为引导。即文件的第一行为:function[返回参数1,返回参数2,。。。]=函数名(输入参数1,输入参数2,。。。)这一行的有无是区分命令文件和函数文件的重要标志。函数文件可以接受输入变量,还可以返回输出变量,执行时需在命令窗口中以固定格式调用函数方可。其主要用处是利用MATLAB语句构造一个新的函数。2.2设计思路与流程图2.2.1设计思路根据量化原理,了解均匀量化和非均匀量化的定义后设计编写均匀量化程序和非均匀量化的程序流程图。2.2.2均匀量化流程图量化绘图设置t的值设置正弦信号设定量化点32.2.3非均匀量化流程图2.3仿真程序2.3.1均匀量化仿真程序对一个正弦信号进行均匀量化,在图上同时显示出原始信号和量化后信号t=[0:0.1:2*pi];%在[0,2*pi]之间按0.1间隔取值sig=sin(t);%原始信号,一个正弦波partition=[-1:.2:1];%在[-1,1]之间按0.2间隔取值codebook=[-1,-0.9,-0.7,-0.5,-0.3,-0.1,0.1,0.3,0.5,0.7,0.9,1];%长度12,每隔一个条目[index,quants,distor1]=quantiz(sig,partition,codebook);%量化plot(t,sig,'x',t,quants,'.')%绘图axis([0.27-1.21.2])[distor1]%显示平均平方扭曲dstor1=0.00392.3.2非均匀量化仿真程序用B折线近似A律压缩特性曲线的方法如下,对于归一化输入x[-1,1],归一化输出y[-1,1],压缩特性关于原点成奇对称,以下仅考虑第一象限情况,y平均分成8区间,x的区间划分为[0,1/128]、[1/128,1/64]、[1/64,1/32]、[1/32,1/16]、[1/16,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],各区间端点相连,即构成A律13折线近似压缩特性曲线。1画出上述A律折线近似的压缩特性曲线2画出A压缩律的A=87.6对应的压缩特性曲线,并与1中的曲线比较解:程序流程图如图6-18所示,程序如下%demoforAlawforquantize,filename:A_law.mY=A*X/(1+lnA)Y=(1+ln(A*X))/(1+lnA)画出A律与折线图结束X1/A计算Y在[0,1]之间按0.01间隔取点x清内存变量A=87.6开始4%A=87.6y=Ax/(C1+LnA)(0x1/A)y=(1+LnAx)/(1+LnA)clearall;closeall;dx=0.01;x=0:dx:1;%在[0,1]之间按0.01间隔取点A=87.6;%ALawfori=1:length(x)ifabs(x(i))1/A%abs是绝对值函数ya(i)=A*x(i)/(1+log(A));elseya(i)=sign(x(i))*(1+log(A*abs(x(i))))/(1+log(A));%sign是符号函数endend%计算y的值figure(1)%打开图形窗口plot(x,ya,'k.:');%以x,ya绘图(k代表黑色,.代表圆点,:代表点线)title('ALaw')%为图取名为ALawxlabel('x');%横轴标注为xylabel('y');%纵轴标注为ygridon%绘制网格线holdon%保持当前图形xx=[0,1/128,1/64,1/32,1/16,1/8,1/4,1/2,1];yy=[0,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1];plot(xx,yy);%以xx,yy绘图stem(xx,yy);%针状图;三仿真结果3.1调试根据系统的原理结构检查各流程图是否正确,再根据流程图来检查程序是将所有程序组织起来,在软件环境下运行,检查程序是否正确。通过对MATLAB系统的认真检查,反复测试,如果没有出现问题即可把源程序进行仿真。3.2均匀量化仿真图501234567-1-0.8-0.6-0.4-0.200.20.40.60.813.3非均匀量化仿真图600.10.20.30.40.50.60.70.80.9100.10.20.30.40.50.60.70.80.91ALawxy四结果分析4.1均匀量化结果分析在均匀量化中,每个量化区间的量化值均取在各区间的中点。其量化间隔取决于样值取值的变化范围和量化级。在一定的取值范围内,均匀量化的量化误差只与量化间隔有关。一旦量化间隔确定,无论抽样值大小,均匀量化噪声功率都是相同的。增大量化级,减小量化间隔,则量化误差会减小。但在实际中,过多的量化级将使系统的复杂性大大增加。量化级应根据量化信噪比的要求确定。4.2非均匀量化结果分析非均匀量化是一种在整个动态范围内量化间隔不相等的量化,换言之,非均匀量化是根据输入信号的概率密度函数来分布量化电平,以改善量化性能。其特点是,输入小时,量阶也小,输入大时,量阶也大。程序开始时,先清除内存变量,然后设置变量x的值,根据x计算y值,最后画出A律图形与折线图。4.3误差分析在均匀量化中,量化级级越大,量化误差越小,量化后信号越逼近原信号。我们希望减小误差,又不希望过多增加量化级。在均匀量化中信号幅值大的信号(打信号)与信号幅值小的信号(小信号)的绝对量化误差是相同的,同样大的噪声对大信号影响可能不大,但是对小信号可能造成严重后果,小信号的量化信噪比就难以达到给定的要求。因此采用非均匀量化的方法提高小信号的信噪比,又不过多增加量化级。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功