均匀与非均匀量化Word下载.docx
《均匀与非均匀量化Word下载.docx》由会员分享,可在线阅读,更多相关《均匀与非均匀量化Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
本实验利用正弦函数的若干点(17个)。
量化:
根据不同的输入值,可以得到在不同量化级数下(量化级数n=8,16,64)的结果,算法是程序的核心之一。
编码:
对量化结果进行二进制编码,本例进行自然编码,另一个算法核心。
作图与显示:
做出不同量化级数下量化曲线、量化误差曲线;
显示量化信噪比、及部分采样点的编码结果。
3、语句分析
详细的分析见程序注释
四、实验数据
1、均匀量化(曲线名称见各自曲线图)
(1)n=8
(2)n=16
(3)n=64
2、非均匀量化(u率对数量化)
(1)n=8
2、数据分析与说明:
(1)n=8,16,64的均匀量化曲线
对于均匀量化,量化级数越大,量化值与原始值约接近,量化误差越小,即量化效果越好。
(2)n=8,16,64的均匀量化信噪比
对于均匀量化,量化级数越大,量化信噪比越大
(3)n=8,16,64的非均匀量化曲线
对于非均匀量化,量化级数越大,量化值与原始值约接近,量化误差越小,即量化效果越好。
(4)n=8,16,64的非均匀量化信噪比
对于非均匀量化,量化级数越大,量化信噪比越大
(5)对于相同量化级的均匀与非均匀量化特性
均匀量化的量化误差分布比较均匀,而非均匀量化的量化误差随信号幅度变化:
在大幅度处大,在小幅度处小。
当n较小时,均匀量化的量化信噪比大于非均匀量化,但是当n较大时,均匀量化的量化信噪比小于非均匀量化
五、实验结果的分析与讨论
通过对实验数据的分析,我们直观的发现了与通原理论课一样的结论。
无论是均匀量化
还是非均匀量化其量化信噪比的是随着量化级数的增大而增大。
而均匀量化与非均匀量化相比,前者是先简单,后者相对复杂,但更适合小信号出现概率较大的信号,有实际应用背景。
六、实验总结与心得体会
这次实验在利用老师给出的核心部分后相对简单,再加之对matlab的掌握有了一定提高,完成得比上次顺利。
其中对matlab编程的规范性有了进一步的强化,无论是注释的规范性还是程序的灵活性都有了提高。
七、思考题
1、答:
采用奈奎斯特抽样频率为2fh,
量化级数为n,则每码元比特数为log2n,
量化后的信号带宽为2wlog2n。
2、答:
非均匀PCM的量化信噪比之所以优于均匀PCM的量化信噪比是因为它具有
较大的动态范围,结合实际语声信号的特点:
大信号出现概率小,小信号出现概率大,非均匀量化的压扩特性恰好适应这一条件。
3、答:
以n=8为例,通过程序算出:
前者a均匀量化量化信噪比为14.006非均匀量化量化信噪比为2.7422
后者a均匀量化量化信噪比为-0.94856非均匀量化量化信噪比为0.1694
虽然以上数据均为不定值,但大小相对关系不会改变:
即:
前者a均匀量化量化信噪比优于非均匀量化量化信噪比
后者a非均匀量化量化信噪为优于均匀量化量化信噪比
原因是前者a为服从正态分布,样值比较均匀,适合均匀量化
而后者a的各个元素跳跃较大,分布不均,适合动态范围较大的非均匀量化
附录:
源程序:
1、均匀量化
N=2^10;
L=2^6;
M=N/L;
%采样点数
a=sin(0:
2*pi/M:
2*pi);
%取样点
n=input('
量化级数='
);
%初始化,n为量化级数
ifisempty(n),
n=8;
end
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(find((q(i)-d/2<
=a_quan)&
(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))));
a_quan=a_quan*amax;
%恢复原值(量化后)
nu=ceil(log2(n));
%编码
code=zeros(length(a),nu);
length(a)
forj=nu:
-1:
0%从高向低编码
if(fix(b_quan(i)/(2^j))==1)
code(i,(nu-j))=1;
b_quan(i)=b_quan(i)-2^j;
sqnr=20*log10(norm(a)/norm(a-a_quan));
%求量化信噪比
t=(0:
2*pi/N:
aq=sin(0:
%计算所有采样点的量化值,为作图服务
aq_quan=aq/amax;
aq=d.*[0:
aq=((n-1)/2)*d-aq;
aq_quan(find((q(i)-d/2<
=aq_quan)&
(aq_quan<
=aq_quan)&
(aq_quan<
figure
(1)%作原始信号及量化曲线
set(1,'
position'
[10,50,300,200])
plot(t,sin(t))
gridon
axis([0,2*pi,-1.2*amax,1.2*amax])
title('
原始信号及量化曲线'
)
xlabel('
t'
ylabel('
原始信号及量化信号值'
text(2,1,'
sin(t)'
holdon
plot(t,aq_quan,'
r'
figure
(2)%做量化误差曲线(对所有采样点)
set(2,'
[350,50,300,200])
plot(t,aq_quan-sin(t))
axis([0,2*pi,-2*amax/n,2*amax/n])
量化误差曲线'
量化误差值'
figure(3)%做前十个取样点的量化值曲线及表示量化信噪比(量化信噪比的计算依据一个周期内所有取样点,并非前十个)
[20,60,300,200])
stem(a_quan)
axis([0,10.5,-amax,amax])
量化值及编码显示'
num'
fork=1:
M
CODA=num2str(code(k,:
));
text(k,a_quan(k),CODA)
text(7,0.7*amax,'
量化信噪比='
text(8.2,0.7*amax,num2str(sqnr))
2、非均匀量化
aa=sin(0:
u=255;
a=mulaw(aa,u);
aa_quan=invmulaw(a_quan,u);
sqnr=20*log10(norm(aa)/norm(aa-aa_quan));
aaq=sin(0:
aq=mulaw(aaq,u);
aaq_quan=invmulaw(aq_quan,u);
plot(t,aaq_quan,'
plot(t,aaq_quan-sin(t))
axis([0,2*pi,-0.6*amax,0.6*amax])
stem(aa_quan)
text(k+0.1,aa_quan(k)+0.05,CODA)