《均匀与非均匀量化.doc》由会员分享,可在线阅读,更多相关《均匀与非均匀量化.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流均匀与非均匀量化【精品文档】第 8 页 实验二 均匀、非均匀量化与编码一、 实验目的1、 了解均匀与非均匀量化编码的原理与过程2、 掌握两种不同量化编码方式的特点并能加以比较3、 进一步熟悉matlab在通信方面的应用二、 理论依据通原理论课中的标量量化原理,包括均匀量化和以PCM为例的非均匀量化(对数量化)。三、 实验内容1、 仿真理论及系统框图(1) 均匀量化(2)非均匀量化 非均匀量化(对数量化)原理框图 u律压扩特性(本实验以u律为例)2、 模块说明实验程序设计依照量化编码原理可大体分为采样、量化、编码、作图及相关显示几部分。采样:本实验利用正弦
2、函数的若干点(17个)。量化:根据不同的输入值,可以得到在不同量化级数下(量化级数n=8,16,64)的结果,算法是程序的核心之一。编码:对量化结果进行二进制编码,本例进行自然编码,另一个算法核心。作图与显示:做出不同量化级数下量化曲线、量化误差曲线;显示量化信噪比、及部分采样点的编码结果。3、 语句分析详细的分析见程序注释四、 实验数据1、 均匀量化(曲线名称见各自曲线图)(1) n=8(2) n=16(3) n=642、 非均匀量化(u率对数量化)(1)n=8(2) n=16(3) n=642、数据分析与说明:(1)n=8,16,64的均匀量化曲线 对于均匀量化,量化级数越大,量化值与原始
3、值约接近,量化误差越小,即量化效果越好。(2)n=8,16,64的均匀量化信噪比 对于均匀量化,量化级数越大,量化信噪比越大(3)n= 8,16,64的非均匀量化曲线 对于非均匀量化,量化级数越大,量化值与原始值约接近,量化误差越小,即量化效果越好。(4) n=8,16,64的非均匀量化信噪比对于非均匀量化,量化级数越大,量化信噪比越大(5) 对于相同量化级的均匀与非均匀量化特性均匀量化的量化误差分布比较均匀,而非均匀量化的量化误差随信号幅度变化:在大幅度处大,在小幅度处小。当n较小时,均匀量化的量化信噪比大于非均匀量化,但是当n较大时,均匀量化的量化信噪比小于非均匀量化五、实验结果的分析与讨
4、论通过对实验数据的分析,我们直观的发现了与通原理论课一样的结论。无论是均匀量化还是非均匀量化其量化信噪比的是随着量化级数的增大而增大。而均匀量化与非均匀量化相比,前者是先简单,后者相对复杂,但更适合小信号出现概率较大的信号,有实际应用背景。六、实验总结与心得体会这次实验在利用老师给出的核心部分后相对简单,再加之对matlab的掌握有了一定提高,完成得比上次顺利。其中对matlab编程的规范性有了进一步的强化,无论是注释的规范性还是程序的灵活性都有了提高。七、思考题1、答:采用奈奎斯特抽样频率为2fh, 量化级数为n,则每码元比特数为log2n, 量化后的信号带宽为2wlog2n。2、答:非均匀
5、PCM的量化信噪比之所以优于均匀PCM的量化信噪比是因为它具有 较大的动态范围,结合实际语声信号的特点:大信号出现概率小,小信号出现概率大,非均匀量化的压扩特性恰好适应这一条件。3、答:以n=8为例,通过程序算出: 前者a 均匀量化量化信噪比为14.006 非均匀量化量化信噪比为2.7422后者a 均匀量化量化信噪比为-0.94856 非均匀量化量化信噪比为0.1694虽然以上数据均为不定值,但大小相对关系不会改变:即:前者a 均匀量化量化信噪比优于非均匀量化量化信噪比 后者a 非均匀量化量化信噪为优于均匀量化量化信噪比 原因是前者a为服从正态分布,样值比较均匀,适合均匀量化 而后者a的各个元
6、素跳跃较大,分布不均,适合动态范围较大的非均匀量化附录:源程序:1、 均匀量化N=210;L=26;M=N/L; %采样点数a=sin(0:2*pi/M:2*pi);%取样点n=input(量化级数=);%初始化,n为量化级数if isempty(n),n=8;endamax=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;%量化电平%进行量化for i=1:na_quan(find(q(i)-d/2=a_quan) & (a_quan=q(i)+d/2)=.%定位第i个量化间隔码子
7、q(i).*ones(1,length(find(q(i)-d/2=a_quan)&(a_quan=q(i)+d/2);%赋值为相应的量化电平b_quan(find(a_quan=q(i) =(i-1) .* ones(1,length(find(a_quan=q(i);enda_quan=a_quan*amax;%恢复原值(量化后)nu=ceil(log2(n);%编码code=zeros(length(a),nu);for i=1:length(a)for j=nu:-1:0%从高向低编码if (fix(b_quan(i)/(2j)=1)code(i,(nu-j)=1;b_quan(i)=
8、b_quan(i)-2j;endendendsqnr=20*log10(norm(a)/norm(a-a_quan);%求量化信噪比t=(0:2*pi/N:2*pi);aq=sin(0:2*pi/N:2*pi);%计算所有采样点的量化值,为作图服务aq_quan=aq/amax;%归一化aq=d.*0:n-1;aq=(n-1)/2)*d-aq;%量化电平for i=1:naq_quan(find(q(i)-d/2=aq_quan) & (aq_quan=q(i)+d/2)=.%定位第i个量化间隔码子q(i).*ones(1,length(find(q(i)-d/2=aq_quan)&(aq_q
9、uan=q(i)+d/2);%赋值为相应的量化电平endfigure(1)%作原始信号及量化曲线set(1,position,10,50,300,200)plot(t,sin(t)grid onaxis(0,2*pi,-1.2*amax,1.2*amax)title(原始信号及量化曲线)xlabel(t)ylabel(原始信号及量化信号值)text(2,1,sin(t)hold onplot(t,aq_quan,r)figure(2)%做量化误差曲线(对所有采样点)set(2,position,350,50,300,200)plot(t,aq_quan-sin(t)grid onaxis(0,
10、2*pi,-2*amax/n,2*amax/n)title(量化误差曲线)xlabel(t)ylabel(量化误差值)figure(3)%做前十个取样点的量化值曲线及表示量化信噪比(量化信噪比的计算依据一个周期内所有取样点,并非前十个)set(1,position,20,60,300,200)stem(a_quan)grid onaxis(0,10.5,-amax,amax)title(量化值及编码显示)xlabel(num)ylabel(量化值及编码显示)for k=1:MCODA=num2str(code(k,:);text(k,a_quan(k),CODA)text(7,0.7*amax
11、,量化信噪比=)text(8.2,0.7*amax,num2str(sqnr)end2、非均匀量化N=210;L=26;M=N/L; %采样点数aa=sin(0:2*pi/M:2*pi);%取样点u=255;n=input(量化级数=);%初始化,n为量化级数if isempty(n),n=8;enda=mulaw(aa,u);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;%量化电平%进行量化for i=1:na_quan(find(q(i)-d/2=a_quan) &
12、(a_quan=q(i)+d/2)=.%定位第i个量化间隔码子q(i).*ones(1,length(find(q(i)-d/2=a_quan)&(a_quan=q(i)+d/2);%赋值为相应的量化电平b_quan(find(a_quan=q(i) =(i-1) .* ones(1,length(find(a_quan=q(i);enda_quan=a_quan*amax;%恢复原值(量化后)nu=ceil(log2(n);%编码code=zeros(length(a),nu);for i=1:length(a)for j=nu:-1:0%从高向低编码if (fix(b_quan(i)/(2
13、j)=1)code(i,(nu-j)=1;b_quan(i)=b_quan(i)-2j;endendendaa_quan=invmulaw(a_quan,u);sqnr=20*log10(norm(aa)/norm(aa-aa_quan);%求量化信噪比t=(0:2*pi/N:2*pi);aaq=sin(0:2*pi/N:2*pi);%计算所有采样点的量化值,为作图服务aq=mulaw(aaq,u);aq_quan=aq/amax;%归一化aq=d.*0:n-1;aq=(n-1)/2)*d-aq;%量化电平for i=1:naq_quan(find(q(i)-d/2=aq_quan) & (a
14、q_quan=q(i)+d/2)=.%定位第i个量化间隔码子q(i).*ones(1,length(find(q(i)-d/2=aq_quan)&(aq_quan=q(i)+d/2);%赋值为相应的量化电平endaaq_quan=invmulaw(aq_quan,u);figure(1)%作原始信号及量化曲线set(1,position,10,50,300,200)plot(t,sin(t)grid onaxis(0,2*pi,-1.2*amax,1.2*amax)title(原始信号及量化曲线)xlabel(t)ylabel(原始信号及量化信号值)text(2,1,sin(t)hold on
15、plot(t,aaq_quan,r)figure(2)%做量化误差曲线(对所有采样点)set(2,position,350,50,300,200)plot(t,aaq_quan-sin(t)grid onaxis(0,2*pi,-0.6*amax,0.6*amax)title(量化误差曲线)xlabel(t)ylabel(量化误差值)figure(3)%做前十个取样点的量化值曲线及表示量化信噪比(量化信噪比的计算依据一个周期内所有取样点,并非前十个)set(1,position,20,60,300,200)stem(aa_quan)grid onaxis(0,10.5,-amax,amax)title(量化值及编码显示)xlabel(num)ylabel(量化值及编码显示)for k=1:MCODA=num2str(code(k,:);text(k+0.1,aa_quan(k)+0.05,CODA)text(7,0.7*amax,量化信噪比=)text(8.2,0.7*amax,num2str(sqnr)end
限制150内