信源编码-PCM非均匀量化与编码实验报告(完成版).docx
《信源编码-PCM非均匀量化与编码实验报告(完成版).docx》由会员分享,可在线阅读,更多相关《信源编码-PCM非均匀量化与编码实验报告(完成版).docx(7页珍藏版)》请在冰豆网上搜索。
![信源编码-PCM非均匀量化与编码实验报告(完成版).docx](https://file1.bdocx.com/fileroot1/2022-10/30/68a02051-edec-4d63-a539-a88698c604d2/68a02051-edec-4d63-a539-a88698c604d21.gif)
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)
functionsample(f)
t=0:
1/f:
1;
y=1024*cos(2*pi*t);
stem(t,y,'b','filled');
holdon;
T=1:
0.01:
1;
Y=1024*cos(2*pi*T);
plot(T,Y,'r');
2、均匀量化:
对以32Hz的抽样频率进行抽样后的信号的绝对值分别进行8级和2048级均匀量化。
在同一张图上绘出正弦波波形(用plot函数)、量化图(用stairs函数)。
(保存为图3)
functiony=Even(n,m)
t=0:
1/m:
1;
x=1024*cos(2*pi*t);
a=-1024:
2048/n:
1024;
fori=1:
m+1
forj=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([01-1.51.5]);
holdon;
T=0:
0.01:
1;
Y=1024*cos(2*pi*T);
Y=Y/max(Y);
plot(T,Y,'r');
3、PCM编码
对所有的抽样值对应的2048级均匀量化值进行13折线编码,输出相应的PCM编码,并对总的编码比特数进行计数。
具体编码程序流程如下:
抽取第i个样值
判断样值符号
归一化和量化
段落判断
段内判断
输出
开始
结束
取1s原始信号
Y
N
是否达到给定的抽样频率次数32
functioncode=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];
fori=1:
length(S)
forj=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));
ifq==0
code(i,(5:
8))=[0,0,0,0];
elsek=num2str(dec2bin(q-1,4));
code(i,(5:
8))=[str2num(k
(1))str2num(k
(2))str2num(k(3))str2num(k(4))]
end
end
end
ifz(i)>0
code(i,1)=1;
elseifz(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
六.相关源程序