预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

均匀PCM与非均匀PCM 实验目的 掌握MATLAB语言的函数调用,提高编程编程能力。 掌握量化信噪比的基本概念。 3.学习均匀量化和非均匀量化的基本原理,加深对非均匀量化的理解。 实验原理 均匀量化的基本原理 在脉冲编码调制中,模拟信号首先以高于奈奎斯特的速率采样,然后将所的样本量化。假设模拟信号是以[-Ⅹmax,Ⅹmax]表示的区间内分布的,而量化电平数很大。量化电平可以是相等的或是不相等的;前者就属于均匀PCM,而后者就是非均匀PCM。 关于量化的几个基本概念,量化间隔;量化误差;量化信噪比。 (1)相邻量化电平间距离称量化间隔,用“Δ”表示。 (2)设抽样值为,量化后的值为,xq(kTs)与x(kTs)的误差称为量化误差,又称为量化噪声;量化误差不超过±Δ/2,而量化级数目越多,Δ值越小,量化误差也越小。 (3)衡量量化的性能好坏最常用指标是量化信噪比(Sq/Nq),其中Sq表示量化信号值xq(kTs)产生的功率,Nq表示量化误差功率,量化信噪比越大,则量化性能越好。 在均匀PCM中,长度为2Xmax的区间[-Ⅹmax,Ⅹmax]被划分为N个相等的子区间,每一子区间长度为△=2Xmax/N。如果N足够大,那么在每一子区间内输入的密度函数就能认为是均匀的,产生的失真为D=△2/12。 如果N是2的幂次方即,那么就要求用比特来表示每个量化电平。这就意味着,如果模拟信号的带宽是,采样又是在奈奎斯特率下完成的,那么传输PCM信号所要求的带宽至少是(实际上1.5比较接近于实际)。 这时失真由下式给出, (1-1) 如果模拟信号的功率用表示,则信号/量化噪声的比(SQNR)由下式给出 (1-2) 式中表示归一化输入,定义为 (1-3) 以分贝(dB)计的SQNR为 (1-4) 量化以后,这些已量化的电平用比特对每个已量化电平进行编码.编码通常使用自然二进制码(NBC),即最低电平映射为全0序列,最高电平映射为全1序列,全部其余的电平按已量化值的递增次序映射。 非均匀量化的基本原理 正变换:,其中是归一化输入(),是一个参数,在标准律的非线性中它等于255。 反变换: 在非均匀量化PCM中,输入信号首先通过一非线性环节以减小输入的动态范围,再将输出加到某一均匀PCM系统上。在接收端,输出再通过另一非线形环节,该环节是在发送端所用的非线性环节的逆特征。这样,总的效果就等效于一个在量化电平之间具有非均匀间隔的PCM系统。 非均匀量化时,量化器随着输入信号的大小采用不同的量化间隔,大信号时采用大的量化间隔,小信号时采用小的量化间隔,可以以较少的量化电平数达到输入动态范围的要求 一般对语音信号传输来说,所使用的非线性可以是律的非线性,或是A律的非线性,中国和欧洲采用A率压缩特性(A=87.56),北美和日本采用律压缩特性(=255),压缩特性分别如下: μ律:(1-5) A律:(1-6) 式中,x为归一化输入,y为归一化输出,A、为压缩系数,式(3-1)也可以表示为, (1-7) 本实验主要仿真律的有关特性。 如图1-1所示为不同值对应的输入输出关系曲线. 图1-1不同值对应的输入输出关系 律的非线性的逆为 量化信噪比的基本概念 实验内容: 均匀量化产生一个幅度为1和的正弦信号,用均匀量化方法分别用8电平和16电平进行量化,在同一个坐标轴上画出原信号和已量化信号,比较这两种情况下的SQNR。 均匀量化产生长度为500的零均值、单位方差的高斯随机变量序列,利用u_pcm.m求当量化电平数为64时所得的SQNR。求出该序列的前5个值、相应的量化值和相应的码字。 非均匀量化产生一个长度为500,按分布的随机变量序列。用16、64和128量化电平数和的律非线性,并求SQNR。 Matlab代码: (1)下面给出的M文件u-pcm.m用采样值序列和要求的量化电平数作输入,求得已量化序列、编码序列和产生的SQNR(以dB计)。 function[sqnr,a_quan,code]=u_pcm(a,n) %U_PCM uniformPCMencodingofasequence % [SQNR,A_QUAN,CODE]=U_PCM(A,N) % a=inputsequence. % n=numberofquantizationlevels(even). % sqnr=outputSQNR(indB). % a_quan=quantizedoutputbeforeencoding. % code=theencodedoutput. amax=max(abs(a)); a_quan=a/amax; b_quan=a_quan; d=2/n; q=d.*[0:n-1]; q=q-((n-1)/2)*d; fori=1:n a_quan