信源编码-PCM非均匀量化与编码实验报告(完成版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PCM非均匀量化与编码

实验报告

一、实验目的

(1). 了解模拟信号数字化的三个基本步骤:抽样、量化、编码。

(2). 抽样频率、量化级数对信号数字化的影响.

(3). 加深对非均匀量化的理解。

(4). 理解信息速率与抽样量化编码的关系。

(5). 掌握MATLAB语言的函数调用,提高编程编程能力,,为之后的学习做准备。

二、实验内容:

对模拟信号进行抽样、量化并进行13折线PCM编码,运用Matlab软件实现PCM编码全过程。

三、实验步骤与结果

1、抽样:

产生一个周期的正弦波x(t)=1024cos(2πt)mv ,分别以4HZ和32Hz的频率进行采样用plot函数在绘出原信号和抽样后的信号序列(可用stem函数)。(4Hz保存为图1,32Hz保存为图2)

function sample(f)

t=0:1/f:1;

y=1024*cos(2*pi*t);

stem(t,y,'b','filled');

hold on;

T=1:0.01:1;

Y=1024*cos(2*pi*T);

plot(T,Y,'r');

2、均匀量化:

对以32Hz的抽样频率进行抽样后的信号的绝对值分别进行8级和2048级均匀量化。在同一张图上绘出正弦波波形(用plot函数)、量化图(用stairs函数)。(保存为图3)

function y=Even(n,m)

t=0:1/m:1;

x=1024*cos(2*pi*t);

a=-1024:2048/n:1024;

for i=1:m+1

for j=1:n

if (x(i)>=a(j)&x(i)<=a(j+1))

y(i)=(a(j)+a(j+1))/2;

end

end

end

y=y/max(y);

if(n==8)

stairs(t,y,'b');

end

if(n==2048)

stairs(t,y,'k')

end

axis([0 1 -1.5 1.5]);

hold on;

T=0:0.01:1;

Y=1024*cos(2*pi*T);

Y=Y/max(Y);

plot(T,Y,'r');

3、PCM编码

对所有的抽样值对应的2048级均匀量化值进行13折线编码,输出相应的PCM编码,并对总的编码比特数进行计数。具体编码程序流程如下:

function code=pcm(S)

z=sign(S);

MaxS=max(abs(S));

S=abs(S/MaxS);

Q=2048*S;

code=zeros(length(S),8);

a=[0,16,32,64,128,256,512,1024,2048];

b=[1,1,2,4,8,16,32,64];

for i=1:length(S)

for j=1:8

if (Q(i)>=a(j))&&(Q(i)<=a(j+1))

g=dec2bin(j-1,3);

code(i,(2:4))=[str2num(g(1)) str2num(g(2)) str2num(g(3))]; q=ceil((Q(i)-a(j))/b(j));

if q==0

code(i,(5:8))=[0,0,0,0];

else k=num2str(dec2bin(q-1,4));

code(i,(5:8))=[str2num(k(1)) str2num(k(2)) str2num(k(3))

str2num(k(4))]

end

end

end

if z(i)>0

code(i,1)=1;

elseif z(i)<0

code(i,1)=0;

end

end

四.结果分析

1.图1,图2的区别和特征

图1和图2分别以4HZ和32Hz的频率对函数进行采样,由于图2的采样频率更高,采集的点更多,更能反映原函数的特征。

2. 图3中不同量化等级的区别

图3是对以32Hz的抽样频率进行抽样后的信号的绝对值分别进行8级和2048级均匀量化而产生的函数以及原函数的正弦波波形,可以明显看出2048级的量化更精准,更能反映原函数的特征。

五.实验遇到的问题及解决方法

在该实验中我们主要学习了老师的编码,体会用matlab编程的思想与方法,初步掌握了matlab的应用,之后我与闫黄一起对原来的pcm编码进行了自己的编程,通过自己的变成对matlab有了更深的了解,感受比较深的是遇到matlab 编程的问题时,不仅需要自己的思考,而且也需要去与别人讨论,有时也需要向老师与同学咨询,这样才能更快掌握matlab

六.相关源程序

Even.m sample.m pcm.m

相关文档
最新文档