实验三pcm编码译码文档格式.docx

上传人:b****1 文档编号:13745856 上传时间:2022-10-13 格式:DOCX 页数:10 大小:179.83KB
下载 相关 举报
实验三pcm编码译码文档格式.docx_第1页
第1页 / 共10页
实验三pcm编码译码文档格式.docx_第2页
第2页 / 共10页
实验三pcm编码译码文档格式.docx_第3页
第3页 / 共10页
实验三pcm编码译码文档格式.docx_第4页
第4页 / 共10页
实验三pcm编码译码文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

实验三pcm编码译码文档格式.docx

《实验三pcm编码译码文档格式.docx》由会员分享,可在线阅读,更多相关《实验三pcm编码译码文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

实验三pcm编码译码文档格式.docx

律方式,本设计采用了A律方式。

由于A律压缩实现复杂,常使用13折线法编码,采用非均匀量化PCM编码示意图如图1所示

图1PCM编码示意图

2.抽样:

在一系列离散点上,对信号抽取样值称为抽样。

其模拟信号的抽样过程如图2所示。

图2模拟信号的抽样过程图

3.非均匀量化

图3非均匀13折线压缩特性曲线

图4非均匀13折线编码原理图

在实际应用中,量化器设计好后,量化电平数M和量化间隔

都是确定的。

量化噪声Nq也是确定的。

但是,信号的强度会影响信号量噪比,当信号小时,信号量噪比也就越小。

因此,均匀量化器对小输入信号很不利,为了克服这个缺点,以改善小信号时的信号量噪比,采用下述的非均匀量化方式。

在非均匀量化中,量化间隔是随信号抽样值的不同而变化的。

信号抽样值小时,量化间隔

也小;

信号抽样值大时,量化间隔

也大,非均匀量化的实现方法有两种:

一种是北美和日本采用的μ律压扩,一种是欧洲和我用的A律压扩,常采用的近似算法是13折线法,该算法的压缩特性图如图3所示。

信号小时,Δ小,信号大时,Δ大。

一般语音信号,信号幅度小出现的概率大,信号幅度大出现的概率小。

通过非均匀量化,使得平均信噪比增大。

13折线A律PCM的非线性编码方法具体过程如表1所示。

在13折线法中采用的折叠码有8位。

其中一位c1表示量化值的极性正负,后7位分为段落码和段码两部分。

用于表示量化值的绝对值。

其中第2~4位(c2~c4)是段落码,5~8位(c5~c8)为段码,可以表示每一段落的16种量化电平。

段码代表的16个量化电平是均匀分布的,因此,这7位码总共能表示27=128种量化值。

编码方法如下所示:

极性码   段落码    段码

C1C2C3C4C5C6C7C8

(1)将量化区间[a,b]分为4096个小段

(2)正半轴2048个小段,负半轴2048个小段

(3)每个小段用Δ表示

表1非均匀13折线编码原理

四、程序设计

1.首先给定一个模拟信号。

2.根据PCM(脉冲编码调制)原理,对模拟信号进行抽样,得到离散信号,然后进行非均匀量化编码,采用13折线法。

3.在Matlab当中进行操作时,首先要画出经过PCM调制的模拟信号波形。

4.将经过PCM调制的信号叠加上一个高斯白噪声信道,然后,根据非均匀量化译码原理,得到译码后的波形,即原始的模拟信号。

五、设计流程

1.输入一个模拟信号,根据奈奎斯特定理,进行抽样,得到时间上离散的模拟信号。

2.根据非均匀量化编码(13折线法),设定模拟信号各个段的段落码和段码。

并画出量化编码后的波形。

3.根据非均匀量化编码(13折线法)的逆向思想,即不同的段落码和段码分别对应不同的电平值,最终得到译码后的模拟信号,然后画出译码后的模拟信号的波形。

六、源程序代码

T=0.002;

t=-0.1:

T:

0.1;

xt=cos(2*pi*30*t)+sin(2*pi*65*t);

fs=500;

sdt=1/fs;

t1=-0.1:

sdt:

st=cos(2*pi*30*t)+sin(2*pi*65*t);

figure

(1);

subplot(3,1,1);

plot(t,xt);

title('

原始信号'

);

gridon

subplot(3,1,2);

stem(t1,st,'

.'

量化信号'

抽样信号'

gridon

n=length(st);

M=max(st);

C=(st/M)*2048;

code=zeros(1,8);

fori=1:

n

ifC(i)>

=0

code(i,1)=1

else

code(i,1)=0

end

ifabs(C(i))>

=0&

&

abs(C(i))<

16

code(i,2)=0;

code(i,3)=0;

code(i,4)=0;

step=1;

start=0;

elseif16<

=abs(C(i))&

32

code(i,4)=1;

start=16;

elseif32<

64

code(i,3)=1;

step=2;

start=32;

elseif64<

128

step=4;

start=64;

elseif128<

256

code(i,2)=1;

step=8;

start=128;

elseif256<

512

step=16;

start=256;

elseif512<

1024

step=32;

start=512;

elseif1024<

2048

step=64;

start=1024;

B=floor((abs(C(i))-start)/step);

t=dec2bin(B,4)-48;

code(i,5:

8)=t(1:

4);

code=reshape(code'

1,8*n);

subplot(3,1,3);

stem(code,'

axis([16401]);

编码信号'

y=awgn(code,5);

figure

(2);

stem(y,'

axis([16403]);

叠加加性高斯信号的信号'

n=length(code);

8,n/8)'

;

slot

(1)=0;

slot

(2)=32;

slot(3)=64;

slot(4)=128;

slot(5)=256;

slot(6)=512;

slot(7)=1024;

slot(8)=2048;

step

(1)=2;

step

(2)=2;

step(3)=4;

step(4)=8;

step(5)=16;

step(6)=32;

step(7)=64;

step(8)=128;

n/8

ss=2*code(i,1)-1;

tmp=code(i,2)*4+code(i,3)*2+code(i,4)+1;

st=slot(tmp);

dt=(code(i,5)*8+code(i,6)*4+code(i,7)*2+code(i,8))*step(tmp)+0.5*step(tmp);

v=1;

r(i)=ss*(st+dt)/4096*v;

end

figure(3);

subplot(1,1,1);

plot(t,r);

编码后的原始信号'

七、MATLAB绘制波形

八、实验总结和心得

在本次实验中,我根据PCM(脉冲编码调制)原理,写出了源程序代码,了解到了很多东西,其过Matlab软件仿真给定模拟信号编码后的波形、对比给的原始信号波形和译码后的波形。

我熟悉掌握了脉冲编码调制的原理和更深一步掌握如何使用MATLAB调制仿真。

但是,我也发现了我自己有很多不足的地方,比如说比较粗心,总是会忘记某个括号,导致数据的不完整性。

同时在也会在不需要“;

”的语句中添加,导致程序不能运行。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1