ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:182.53KB ,
资源ID:25668982      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25668982.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整word版通信原理之PCM编解码.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整word版通信原理之PCM编解码.docx

1、完整word版通信原理之PCM编解码重庆交通大学信息科学与工程学院综合性设计性实验报告专 业 班 级: 姓 名 学 号: 实验所属课程: 通信原理 实验室(中心): 语音八楼 指 导 教 师 : 实验完成时间: 3 年月1日一、 设计题目基于MATLAB的通信系统仿真信源编解码二、实验目的:1.综合应用Matlab编程与系统仿真、信号与系统、现代通信原理等多门课程知识,使我们建立通信系统的整体概念;2.培养我们系统设计与系统开发的思想;3.培养我们利用软件进行通信仿真的能力。4.培养我发现问题,解决问题,查阅资料解决问题的能力。5、培养我熟练掌握MATLAB,运用此matlab软件工具进行通信

2、仿真的能力三、实验设备及软件:PC机一台,MATBLAB。四、实验主要内容及要求:1、 对通信系统有整体的较深入的理解,深入理解自己仿真部分的原理的基础,画出对应的通信子系统的原理框图2、 提出仿真方案;3、 完成仿真软件的编制4、 仿真软件的演示5、 提交详细的设计报告五、实验原理1、 PCM基本原理脉冲编码调制(PCM)简称脉码调制,它是一种用二进制数字代码来代替连续信号的抽样值,从而实现通信的方式。因此此种通信方式抗干扰能力强,因此在很多领域都得到了广泛运用。PCM信号的形成主要由三大步骤组成,包括:抽样、量化和编码。它们分别完成时间上离散、幅度上离散及量化信号的二进制表示。量化分为均匀

3、量化和非均匀量化,为了减小小信号的量化误差,我们常使用的是非均匀量化。非均匀量化分为A律和律。我国采用的是A律,但由于A律不好实现,所以我们常用近似的13折线编码。1.1抽样抽样即是将时间连续的模拟信号由一系列时间离散的样值所取代的过程它实现的是信号在时间上的离散化。抽样信号要想无失真的恢复出原信号,抽样频率必须要满足抽样定理。即:如果信号的最高频率为fH,那么抽样频率fs必须要满足fs=2fH.1.2量化经过抽样后的信号还并不是数字信号,它只实现了时间上的离散化。幅值上并不离散。所以我们要对信号进行量化,实现其幅值的离散化。量化分为均匀量化和非均匀量化。本实验主要用到了非均匀量化中的A律13

4、折线压缩。下面主要介绍A律13折线。A律压缩是指压缩器具有如下的压缩特性: 由于A律在工程上不好实现,所以我们经常用近似的13折线压缩法去代替A率压缩下面是13折线时的X值与A律计算得的X的比较第二行的X值是根据A=87.6时计算得到的,第三行的X值是13折线分段时的值。可见,13折线各段落的分界点与A=87.6 的曲线非常的接近。而13折线的x按2的幂次分布,计算较方便,也易于实现。1.3编码编码即把量化后的新哈变换成二进制代码,其反过程就叫做译码。本实验中我们用的是折叠二进制码。我们把一个量化电平数用一个8位的二进制表示。第1位表示信号的极性,2-4位表示段落码,5-8位表示段内码。A律正

5、输入值编码表段落码段落序号12345678段落码000001010011100101110111段内码量化级段内码量化级段内码15111170111141110601101311015010112110040100111011300111010102001091001100018100000000在13折线中,用8位的折叠二进制码表示信号量化值的具体步骤为:用第2到4位表示段落码,8个段落的起点电平由它的8种可能状态来分别表示。其他四位表示段内码,每一个段落它的16个均匀的划分量化级由它的16种可能状态来分别表示。这样就使得8个段落被划分为128个量化级。再加上负的,相当于一共有256种量化电

6、平数。数字通信系统原理框图本实验详细设计方案各子系统详细介绍:1、 模拟信号为原始的信源信号2、 抽样是将上述的时间和幅值都连续的模拟信号转换为时间离散,幅值连续的信号。3、 量化是将上述信号转换为时间和幅值均离散的数字信号4、 Pcm编码是将量化后的信号转换为01比特流5、 Huffuman编码是为了减少冗余,提高传输效率6、 汉明编码是通过增加冗余位来提高传输效率7、 Bpsk调制式将上述0、1比特流转换成适合在信道中传输的波形8、 加噪是模仿信号传输过程中噪声的干扰,解调、滤波是为了恢复原信号。抽样判决是把信号恢复成0 、1比特流的形式9、 汉明译码、huffuman解压缩、pcm反变换

7、分别是汉明编码,huffuman 编码,pcm编码的反过程。10、 最后还原成模拟信号六、主要代码及必要说明:主函数function PCMmain()close all;clc;clear;A=3;t1=0:0.1:6*pi;a1=sin(t1);figure;subplot(2,1,1);plot(t1,a1);title(原始信号);t2=0:2*pi/32:6*pi;a=sin(t2);subplot(2,1,2);stem(t2,a);title(抽样信号);res=pcm(a);%-datastream,huff,n=hfencodingmain(res);bit2=hanmenc

8、oding(datastream); panjue=channel(bit2,5);bit22=hamyima(panjue);bit3=huffdecoding(bit22,huff,n);S=ipcm(bit3);figure;title(经过信道的重建信号);t=linspace(0,6*pi,length(S);plot(t,S,r);hold on;plot(t,S,.b);pcm编码function res=pcm(s)z=sign(s);maxs=max(abs(s);s=abs(s/maxs);%归一化Q=2048*s;%一个量化单位为1/2048;code=zeros(len

9、gth(s),8);w(1)=0;for k=2:8 w(k)=2(k+2);%段起始值0,16,32,64,128,256,512,1024endres=;for i=1:length(s) if(z(i)0) code(i,1)=1; else code(i,1)=0; end for k=8:-1:1 if Q(i)=w(k) a=dec2bin(k-1,3); code(i,2:4)=a;%段落码的判断 break; end end if k=2 t=fix(Q(i)-w(k)/(2(k-2); else t=fix(Q(i)-w(k); end code(i,5:8)=dec2bin

10、(t,4); %段内码的判断 res=res,code(i,:);endendhuffuman编码的主函数function datastream,huff,n=hfencodingmain(code)p,h1,h=aa(code);c,n=hufftree(p,h1);datastream,huff=hufencoding(c,p,h,h1,n);EndHuffuman编码子函数1、统计各电平出现概率function p,h1,h=aa(x)m=length(x)/8;for i=1:256 chars(i).data=dec2bin(i-1,8); chars(i).num=0;endh=;

11、for j=1:m temp=x(j-1)*8+1:j*8); h=h;temp; for k=1:256 if sum(temp=chars(k).data)=8 chars(k).num=chars(k).num+1; break; end endendh1=;l=0;for i=1:256 if chars(i).num=0 h1=h1,chars(i); l=l+1; endendfor y=1:l p(y)=h1(y).num/m;endend2、构建huffuman树function c,n=hufftree(p,h1)n=length(p);for i=1:n-1for j=i:

12、nif p(i)=p(j)P=p(i);p(i)=p(j);p(j)=P;T=h1(i);h1(i)=h1(j);h1(j)=T;endendendQ=sort(p);c=-ones(2*n-1,6);c(:,1)=1:2*n-1;c(1:n,2)=Q;q=Q;m=zeros(1,2*n-1);for i=n+1:2*n-1 c(i,2)=q(1)+q(2); temp1=find(c(:,2)=q(1)&c(:,6)=1,1); c(temp1,6)=1; temp2=find(c(:,2)=q(2)&c(:,6)=1,1); c(temp2,6)=1; c(i,4)=temp1; c(i,

13、5)=temp2; c(temp1,3)=i; c(temp2,3)=i; Q=Q,q(1)+q(2); q=q(1)+q(2),q(3:end); q=sort(q);endend根据构建的huffuman树进行编码function datastream,huff=hufencoding(c,p,h,h1,n)for i=1:n huffcode=; p=c(i,3); j=i; while(p=-1) if(c(p,4)=j) huffcode=0,huffcode; else huffcode=1,huffcode; end j=p; p=c(j,3); end huff(i).ch=h

14、1(i).data; huff(i).code=huffcode;endl,k=size(h);datastream=;for i=1:l for j=1:n if sum(h(i,:)=huff(j).ch)=8 datastream=datastream,huff(j).code; break; end endendend(7、4)汉明编码function bit2=hanmencoding(m)H=0 1 1 1 1 0 0; 1 0 1 1 0 1 1; 1 1 0 1 0 0 1;G=1 0 0 0 0 1 1; 0 1 0 0 1 0 1; 0 0 1 0 1 1 0; 0 0 0

15、 1 1 1 1;bit2=;n=fix(length(m)/4);for i=1:n t=m(i-1)*4+1:i*4); bit2=bit2,rem(t*G,2);endbit2=bit2,m(4*n+1:end);end通过信道的子函数function panjue=channel(bit2,SNR)%-调制-cs=bit2*2-1;de=;t=linspace(0,1,16);carrier=cos(2*pi*t);for i=1:length(cs) de=de,cs(i)*carrier;endfigure;subplot(4,1,1);plot(de);axis(0,length

16、(de)/10,-1,1);title(调制信号);%-加噪-de=awgn(de,SNR,measured);%-解调-designal=;for i=1:16:length(de)-15 designal=designal,de(i:i+15).*carrier;endsubplot(4,1,2);plot(designal);axis(0,length(designal)/10,-1,1);title(解调信号);%-滤波-load lowpass;l=fix(length(lowpass)/2);designal=designal,zeros(1,l);b=filter(lowpass

17、,1,designal);b=b(l+1:end);subplot(4,1,3);plot(b);axis(0,length(b)/10,-1,1);title(滤波后的信号);%-抽样判决-panjue=;panjue1=;for i=1:length(b)/16; sum1=b(i-1)*16+4); if sum1=0 panjue=panjue,1; panjue1=panjue1,ones(1,16); else panjue=panjue,0; panjue1=panjue1,zeros(1,16); endendsubplot(4,1,4);plot(panjue1);axis(

18、0,length(panjue1)/10,-1,1);title(抽样判决信号);end汉明码译码函数function bit3=hamyima(bit2)H=0 1 1 1 1 0 0; 1 0 1 1 0 1 1; 1 1 0 1 0 0 1;j=fix(length(bit2)/7);bit3=;for k=1:j R=bit2(k-1)*7+1:k*7); S=rem(R*H,2); for i=1:7 if sum(S=H(:,i)=3 break; end end R(i)=R(i); bit3=bit3,R(1:4);endbit3=bit3,bit2(j*7+1:end);en

19、dhuffuman译码function transcode=huffdecoding(datastream,huff,n)k=datastream;transcode=;len=0;max=1;for u=1:n temp=length(huff(u).code); if tempmax max=temp; endendwhile(length(k)=0) d=k(1);for L=1:length(k) symbol=0; for i=1:n if (length(d)=length(huff(i).code) if(length(find(d=huff(i).code)=length(d)

20、 transcode=transcode,huff(i).ch; k=k(length(d)+1:end); symbol=1; end end if symbol=1 break; end end if symbol=1 break; else if length(k)-length(d)0 d=d,k(length(d)+1); else transcode=transcode,k; break; end endendendpcm译码function S=ipcm(code)len=length(code)/8;w(1)=0;for k=2:8 w(k)=2(k+2);%段起始值0,16,

21、32,64,128,256,512,1024endfor i=1:7 b(i)=(w(i+1)-w(i)/16;%每段的最小量化间隔endb(8)=1024/16;S=;for i=1:len s=code(i-1)*8+1:(i-1)*8+8); t=bin2dec(s(2:4)+1;%判断段落位置 y=bin2dec(s(5:8);%判断段内地址 m=w(t)+(y+0.5)*b(t); m=m/2048; if s(1)=0%判断极性 m=-m; end S=S,m;endfunction a=bin2dec(x)%二进制转十进制n=length(x);sum=0;for i=1:n s

22、um=sum+x(i)*2(n-i);enda=sum; function a=dec2bin(x,n)%将x转换为n位的二进制aa=zeros(1,length(n);for i=1:n if x=2(n-i) a(i)=1; x=x-2(n-i); else a(i)=0; end end六、测试结果及分析:信噪比为5时的重建模拟信号信噪比为2时的重建模拟信号信噪比为1时的重建模拟信号对比不同信噪比情况下的重建信号可知,信噪比越大,信号恢复的质量越好。七、实验体会:通过本次实验我收获不少,使我对通信原理更加的了解了,尤其是模拟信号数字化这一块儿。有了以前的matlab以及信息论与编码课程设

23、计做铺垫,这次实验相比以往要更顺利一些。但编码过程中还是遇到了一些问题。比如抽样判决过程中,我一直有个问题不是很明白,为什么不取一个周期的平均值作为判决依据,而要取一个周期的某个点呢。我觉得取平均值的话可以在一定程度上减小误差。那么还希望老师能够解决我的这个疑问。在测试不同信噪比情况下,信号恢复情况时我发现,同一信噪比情况下,出来的图也并不完全一样的。我想是不是信道加噪的过程是随机的原因。其间,程序出错了,自己改半天改不出来,最后还是在同学的帮助下解决的。在此,非常的感谢她对我的帮助。同时也体会到了互助的力量。那么通过这次实验学到了不少,也希望自己以后可以通过自己的努力以及老师,同学的帮助学到更多的东西。八、参考文献1王立宁,乐光新等. Matlab与通信仿真M, 人民邮电出版社, 2000.12John G. proakis等著, 刘树棠译. 现代通信系统(Matlab版)(第二版)M, 电子工业出版社, 2006.93Bernard Sklar著, 徐平平等译. 数字通信基础与应用(第二版) M, 电子工业出版社, 2004.114樊昌信等. 通信原理(第6版)M. 国防工业出版社,2008.3

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

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