语音信号处理实验报告4
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语音信号处理实验四:均匀量化编码与解码
一、实验目的:
了解均匀量化编码与解码的基本原理,及整个量化过程和量化噪声与编码的关系;
学会利用matlab软件编程利用原理对一语音信号进行编码和解码,并仿真。
二、实验原理:
均匀量化PCM在输入信号幅度变化范围是已知的和幅度值在已知的范围内是均匀分布的这两个条件下效果是很好的。均匀量化是把整个幅度分成等间隔的2^n段,把每个段内的值都量化成一个数值,把量化后的数值根据极性,断码和量化电平对量化后的信号进行编码。最后解码是编码的逆过程。
三、实验程序:
clc;
clear all;
[d,r]=wavread('so.wav');
figure(1);
subplot(3,1,1);
plot(d);
title('原始信号');
m1=max(d);
m2=min(d);
t=linspace(m1,m2,256);
l=length(d);
S=zeros(length(d),2);
T=zeros(length(d),8);
for i=1:l
for k=1:length(t)-1;
if(d(i)<=t(k) & d(i)>=t(k+1)) S(i,1)=t(k+1);
S(i,2)=k;
end
end
end
subplot(3,1,2);
stem(S(:,1));
title('量化后信号');
for i=1:l
temp=S(i,2);
T(i,:)=tentotwo(temp);
end
New=zeros(1,length(T));
mm=linspace(m1,m2,256);
for i=1:length(T)
temp(i)=twototen(T(i,:));
new(i)=mm(temp(i));
end subplot(3,1,3);
plot(new);
title('解码后信号');
function y=tentotwo(x)
y=zeros(1,8);
for i=1:8
if(mod(x,2)==0)
y(8-i+1)=0;
else
y(8-i+1)=1;
end
x=floor(x/2);
end
function y=twototen(x)
l=length(x);
y=0;
for i=1:l
if(x(i)==1)
y=y+2^(8-i);
end
end
上图为仿真结果
四、实验总结:
通过本次实验我收获很大。通过实验,我认真学会了很多课本上没有的东西,并深入的学习了课本知识,把通信原理学习到的知识进行了深化。我学会了如何用matlab进行均匀量化编码,并学会了对此进行解码。懂得了均匀量化编码的适用范围。
但部分细节程序仍需努力研究,没有完全掌握。