t=dec2bin(tmp,4)-48;%函数dec2bin输出的是ASCII字符串,48对应0out(i,5:8)=t(1:4);endendout=reshape(out',1,8*n);解码子程序:function[out]=pcm_decode(in,v)%decodetheinputpcmcode%in:inputthepcmcode8bitssample%v:quantizedleveln=length(in);in=reshape(in',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;fori=1:n/8ss=2*in(i,1)-1;tmp=in(i,2)*4+in(i,3)*2+in(i,4)+1;st=slot(tmp);dt=(in(i,5)*8+in(i,6)*4+in(i,7)*2+in(i,8))*step(tmp)+0.5*step(tmp);out(i)=ss*(st+dt)/4096*v;end4.程序结果:图3PCM编码、解码仿真结果5.实验结果分析从上图可以看出,该程序能将正弦信号正确采样量化编码解码。正弦信号经A律13折线编码解码后,两条曲线基本一致。此图可以清晰地看出当信号幅度较小时,解码后的波形是平滑的曲线,而当信号幅度较大时(比如波峰和波谷附近)可以看到细小的锯齿状波形,此现象说明了A率13折线编码当输入信号小时,段落小,量化级间隔小;当输入信号大时,段落大,量化级间隔大的特点,可以有效减低小信号的量化误差。