数字通信实验报告2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分别对应的 y 区间为
1 1 2 2 3 3 4 4 5 5 6 6 7 7 0, 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 ,1
0.8
1
-1 -1
-0.8
-0.6
-0.4
-0.2
0 x
0.2
0.4
0.6
0.8
1
3.设输入信号为 x(t)=AcSin2t,对 x(t)信号进行抽样、量化和 A 律 pcm 编码,经过传 输后,接收端进行 pcm 译码。 (1) 画出经过 pcm 编码、译码后的波形与未编码的波形。 (2) 设信道没有误码,画出不同幅度 Ac 情况下,pcm 译码后的量化信道比。 %show the pcm encode and decode clear all close all dt = 1/4096; t=0:dt:2; %vm1=-70:1:0; %输入的正弦信号幅度不同
数字通信实验 2 PCM 实验(4 学时)
实验例程:1 设低通信号想 x(t)=0.1cos(0.15 t)+1.5sin2.5 t+0.5cos4 t.
(1)画出该低通信号的波形; (2)画出抽样速率为 fs=4Hz 的抽样序列; (3)抽样序列恢复出原始信号
%低通抽样定理 clear all; close all; dt = 0.01; t = 0:dt:10; xt = 0.1*cos(0.15*pi*t)+1.5*sin(2.5*pi*t)+0.5*cos(4*pi*t); [f,xf] = T2F(t,xt); %抽样信号,抽样速率为 4Hz fs = 4; sdt = 1/fs; t1 = 0:sdt:10; st = 0.1*cos(0.15*pi*t1)+1.5*sin(2.5*pi*t1)+0.5*cos(4*pi*t1); [f1,sf] = T2F(t1,st); 5 %恢复原始信号 t2 = -50:dt:50; 0 gt = sinc(fs*t2); stt = sigexpand(st,sdt/dt); -5 0 1 xt_t = conv(stt,gt); figure(1) 5 subplot(311); plot(t,xt); title('原始信号'); 0 subplot(312); -5 plot(t1,st);title('抽样信号'); 0 1 subplot(313); 4 t3 = -50:dt:60+sdt-dt; 2 plot(t3,xt_t);title('抽样信号恢复'); 0 axis([0 10 -4 4])
-2 -4 0 1
原始信号
2
3
4
5
6
7
8
9
10
抽样信号
2
3
4
5
6
7
8
9
10
抽样信号恢复
2
3
4
5
6
7
8
9
10
2.用 13 折线近似 A 律压缩特性曲线的方法如下,对于归一化输入 x [ 1, 1] ,归一 化输出 y [ 1, 1] ,压缩特性关于原点成奇对称,一下仅考虑第一象限情况。 y 平均等分 成 8 区间, x 的.^(vm1/20); v = 1; %量化区间为[-1,+1] figure(1) for k=1:length(vm) for m=1:1 x=vm(k)*sin(2*pi*t+2*pi*rand(1)); sxx = floor(x*4096); y = pcm_encode(sxx); yy = pcm_decode(y,v); nq(m)=sum((x-yy).*(x-yy))/length(x); sq(m)=mean(yy.^2); snr(m)=(sq(m)/nq(m)); drawnow subplot(211) plot(t,x); title('sample sequence'); subplot(212) stairs(t,yy) title('pcm decode sequence'); end snrq(k)=10*log10( mean(snr) ); end figure(2) plot(vm1,snrq); axis([-60 0 0 60]); grid; function[out]=pcm_encode(x) %x encode to pcm code n=length(x); % -4096<x<4096 for i=1:n if x(i)>0 out(i,1)=1; else out(i,1)=0; end if abs(x(i))>=0&&abs(x(i))<32 out(i,2)=0;out(i,3)=0;out(i,4)=0;step=2;st=0; elseif 32<=abs(x(i))&&abs(x(i))<64 out(i,2)=0;out(i,3)=0;out(i,4)=1;step=2;st=32; elseif 64<=abs(x(i))&&abs(x(i))<128
各区间端点相连,即构成 A 律 13 折线近似压缩特性曲线。
(1) (2) (3) 画出上述 A 律折线近似的压缩特性曲线; 画出式 A=87.56 对应的压缩特性曲线,并与(1)比较; 画出 =255 的压缩特性曲线及其折线近似曲线,其中 律的 x 区间划分为
3 3 7 7 15 15 31 31 63 63 127 127 1 1 0, , , , , , , , , , , , , , ,1 255 255 255 255 255 255 255 255 255 255 255 255 255 255
分别对应的 y 区间为
1 1 2 2 3 3 4 4 5 5 6 6 7 7 0, 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 , 8 ,1
u Law 1 0.8 0.6 0.4 0.2 0
y
A Law 1
u律压缩特性 折线近似u律
0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8
y
A律压缩特性 折线近似A律
-0.2 -0.4 -0.6 -0.8 -1 -1
-0.8
-0.6
-0.4
-0.2
0 x
0.2
0.4
0.6
1 1 1 1 1 1 1 1 1 1 1 1 1 1 0, 128 , 128 , 64 , 64 , 32 , 32 , 16 , 16 , 8 , 8 , 4 , 4 , 2 , 2 ,1
%demo for u and for law for quantize,filename:a_u_law.m %u=255 y=ln(1+ux)/lln(1+u) %A=87.6 y=Ax/(1+lnA) (0<x<1/A) y=(1+lnAx)/(1+lnA) clear all; close all; dx=0.01; x=-1:dx:1; u=255; A=87.6; %u law yu=sign(x).*log(1+u*abs(x))/log(1+u); %A Law for i=1:length(x) if abs(x(i))<1/A ya(i)=A*x(i)/(1+log(A)); else ya(i)=sign(x(i))*(1+log(A*abs(x(i))))/(1+log(A)); end end figure(1) plot(x,yu,'k.:'); title('u Law') xlabel('x'); ylabel('y'); grid on hold on
out(i,2)=0;out(i,3)=1;out(i,4)=0;step=4;st=64; elseif 128<=abs(x(i))&&abs(x(i))<256 out(i,2)=0;out(i,3)=1;out(i,4)=1;step=8;st=128; elseif 256<=abs(x(i))&&abs(x(i))<512 out(i,2)=1;out(i,3)=0;out(i,4)=0;step=16;st=256; elseif 512<=abs(x(i))&&abs(x(i))<1024 out(i,2)=1;out(i,3)=0;out(i,4)=1;step=32;st=512; elseif 1024<=abs(x(i))&&abs(x(i))<2048 out(i,2)=1;out(i,3)=1;out(i,4)=0;step=64;st=1024; elseif 2048<=abs(x(i))&&abs(x(i))<4096 out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048; else fprintf('input overflow'); out(i,2)=1;out(i,3)=1;out(i,4)=1;step=128;st=2048; end if(abs(x(i))>=4096) out(i,2:8)=[1 1 1 1 1 1 1 ]; else tmp=floor((abs(x(i))-st)/step); t=dec2bin(tmp,4)-48;%函数 dec2bin 输出的是 ASCII 字符串,48 对应 0 out(i,5:8)=t(1:4); end end out=reshape(out',1,8*n); function[out]=pcm_decode(in,v) %decode the input pcm code %in: input the pcm code 8 bits sample %v:quantized level n=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;
xx=[-1,-127/255,-63/255,-31/255,-15/255,-7/255,-3/255,-1/255,1/255,3/255,7/255,15/255, 31/255,63/255,127/255,1]; yy=[-1,-7/8,-6/8,-5/8,-4/8,-3/8,-2/8,-1/8,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1]; plot(xx,yy,'r'); stem(xx,yy,'b-.'); legend('u 律压缩特性','折线近似 u 律'); figure(2) plot(x,ya,'k.:'); title('A Law') xlabel('x'); ylabel('y'); grid on hold on xx=[-1,-1/2,-1/4,-1/8,-1/16,-1/32,-1/64,-1/128,1/128,1/64,1/32,1/16,1/8,1/4,1/2,1]; yy=[-1,-7/8,-6/8,-5/8,-4/8,-3/8,-2/8,-1/8,1/8,2/8,3/8,4/8,5/8,6/8,7/8,1]; plot(xx,yy,'b-.'); legend('A 律压缩特性','折线近似 A 律');