欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    通信原理matlab课程设计报告.doc

    • 资源ID:4142346       资源大小:178.50KB        全文页数:17页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    通信原理matlab课程设计报告.doc

    一、问题描述1. 使用matlab编程完成HDB3的编码与解码。2. 课程设计需要运用MATLAB编程实现2ASK,2FSK,2PSK,2DPSK调制解调过程,并且输出其源码,调制后码元以及解调后码元的波形。二、实验原理1.HDB3编码解码原理HDB3码:三阶高密度双极性码。 HDB3码与二进制序列的关系: (1)二进制信号序列中的“0”码在HDB3码中仍编为“0”码,二进制信号中“1”码,在HDB3码中应交替地成+1和-1码,但序列中出现四个连“0”码时应按特殊规律编码(引入传号交替反转码的“破坏点”V码); (2)二进制序列中四个连“0”按以下规则编码:信码中出现四个连“0”码时,要将这四个连“0”码用000V或B00V取代节来代替(B和V也是“1”码,可正、可负)。这两个取代节选取原则是,使任意两个相邻v脉冲间的传号数为奇数时选用000V取代节,偶数时则选用B00V取代节。2.二进制数字调制技术原理数字信号的传输方式分为基带传输和带通传输,在实际应用中,大多数信道具有带通特性而不能直接传输基带信号。为了使数字信号在带通信道中传输,必须使用数字基带信号对载波进行调制,以使信号与信道的特性相匹配。这种用数字基带信号控制载波,把数字基带信号变换为数字带通信号的过程称为数字调制。通常使用键控法来实现数字调制,比如对载波的振幅、频率和相位进行键控。(1)2ASK信号的产生方法通常有两种:模拟调制和键控法。解调有相干解调和非相干解调。P=1时f(t)=Acoswt;p=0时f(t)=0;其功率谱密度是基带信号功率谱的线性搬移(2) 一个2FSK信号可以看成是两个不同载波的2ASK信号的叠加。其解调和解调方法和ASK差不多。2FSK信号的频谱可以看成是f1和f2的两个2ASK频谱的组合。(3) 2PSK以载波的相位变化作为参考基准的,当基带信号为0时相位相对于初始相位为0, 当基带信号为1时相对于初始相位为180°。(4) 2DPSK调制原理方框图如下图。S(t)            载波移相p码变换 A(t)  间接法信号调制器原理方框图2DPSK信号的解调,主要有两种方法,即相位比较法和相干解调法。相干解调法原理方框图如下图:  带通滤波相乘低通滤波抽样判决逆码变换本地载波 提取相干解调法原理方框图三、源程序clearclca=20; %a表示元素个数,可以修改码元为任意个数如1024r=unidrnd(2,1,a-1); %随机产生离散均匀二值分布(1,2),共a-1个rn=r-1; %每个元素减1变为(0,1)二值随机数列rn=1,rn; %跟书上一致,从1开始随机产生离散均匀二值分布(1,2),共a个ori=rn; %将原序列保存起来,便于后面解码后比较oril=1; for k=1:a-3 if abs(rn(k)=1 m=rn(k); %m记录可能存在的连续4个0前面非零码元的符号 end if rn(k)=0 if rn(k+1)=0 if rn(k+2)=0 if rn(k+3)=0 %检测是否连续4个码元都是0 rn(k+3)=2*m; %用2表示书上的V end end end endendrn ; %插入V(2)后 checked l=1; %l=1表示两个V之间有偶数个非零码,0是偶数,所以初始为1,l=-1表示两个V之间有奇数个非零码for s=1:a if abs(rn(s)=2 for d=s+1:a if abs(rn(d)=1 %V之间的非零码只有+1,-1遇到一个一使l变一次号,表示偶数或奇数 l=-l; end if abs(rn(d)=2 if l=1 l=1; %不需要插入B时若检测到V也应把计数器清零 %最初版本的升级处1 else %检测到下一个V时,若为偶数个,则插入B rn(d-3)=3*(-(rn(d-4)/(abs(rn(d-4); %3代表B,插入不带符号的B rn(d:a)=-rn(d:a); end %V后的符号再交替 end end endendrn %到此处完成了插入不带符号的B%for s=1:a % if abs(rn(s)=3 %找到B %rn(s)=rn(s)*(-(rn(s-1)/(abs(rn(s-1); %B(3)与前一个位置的带符号的归一值相乘再取反,实现符号B(3)的极性与前一非符号的相反 %B后面第三个就是接下来的V,从它开始非零码正负号交替变化 %end%end HDB=rn; %给B(3)添加了符号,并且实现了V后的符号再交替HDB %以上便实现了HDB3的编码 %下面进行解码for k=1:a if abs(rn(k)=2 rn(k-3)=0;rn(k)=0; %每个V(2)都变成0,V前面第三个有可能是B(3)有可能是0也恢复为0 end if abs(rn(k)=1 rn(k)=1; endendrn %解码后的恢复序列rn-ori %解码与原码比较全为0则解码正确 s=menu('通信原理','2ASK','2PSK','2FSK','2DPSK')switch s case 1,scolor='2ASK'n=8;N=100;K=4;a=randint(1,n);bita=;sl=;bitRate=1e3;fc=1e3;%载频1KHZt=linspace(0,1/bitRate,N);for i=1:length(a) if a(i)=0 bit1=zeros(1,N); else bit1=ones(1,N); end bita=bita,bit1; c=sin(2*pi*t*fc); sl=sl c;endfigure(1);subplot(K,1,1);plot(bita,'LineWidth',1.5),title('基带信号'),grid on;axis(0,N*length(a),-2.5,2.5);tz=bita*6.*sl;subplot(K,1,2);plot(tz,'LineWidth',1.5);title('ASK调制后信号');grid on;signal=awgn(tz,80,'measured');subplot(K,1,3);plot(signal,'LineWidth',1.5),grid on;title('信号+噪声')Fs=3e3;b,a=ellip(4,0.1,40,999.9,1000.1*2/Fs);%设计IIR带通滤波器,阶数为4,通带纹波0.1,阻带衰减40DBsf=filter(b,a,signal);%信号通过该滤波器figure(2);K1=4;subplot(K1,1,1);plot(sf,'LineWidth',1.5),grid on;title('BPF')signal2=abs(sf); %乘同频同相sinsubplot(K1,1,2);plot(signal2,'LineWidth',1.5),grid on;title('全波整流器'); Fs=3e3;%抽样频率400HZb,a=ellip(4,0.1,40,50*2/Fs);%设计IIR低通滤波器sf1=filter(b,a,signal2);%信号通过该滤波器,输出信号sfsubplot(K1,1,3);plot(sf1,'LineWidth',1.5),grid on;title('LPF'); sf2=;LL=fc/bitRate*N;i=LL/2;bitb=;while (i<=length(sf1) %判决 sf2=sf2,sf1(i)>=0.001; i=i+LL; end for i=1:length(sf2) if sf2(i)=0 bit1=zeros(1,N); else bit1=ones(1,N); end bitb=bitb,bit1;endfigure(1);subplot(K,1,4); plot(bitb,'LineWidth',1.5),grid on;title('解调后信号'); axis(0,N*length(sf2),-2.5,2.5); case 2,scolor='2PSK' l=linspace(0,pi,50);% 数据初始化t=linspace(0,9*pi,450);b=1:1:9;out=1:1:450;f=1:1:450;g=1:1:450;w1=2 %正弦波f1的频率,可以根据自己想要的频率在此改写 %正弦波f2的频率,可以根据自己想要的频率在此改写f1=sin(w1*l);figure(1);f2=sin(w1*l+pi);figure(1);subplot(2,1,1),plot(l,f1),axis(0 pi -1.2 1.2),xlabel('t'),ylabel('f1');%画出f1信号波形subplot(2,1,2),plot(l,f2),axis(0 pi -1.2 1.2),xlabel('t'),ylabel('f2');%画出f2信号波形a=0 1 0 0 0 1 1 0 1for i=1:9 %2pSK编码 if a(i)=0 for k=1:50 %如果二进制原码为0则输出f1波形 out(k+50*(i-1)=f1(k); end else for j=1:50 out(j+50*(i-1)=f2(j); %r如果二进制原码为1则输出f2波形 end endendfor i=1:9 %2PSK解码 n=0;m=0; for j=1:50 if out(j+50*(i-1)-f1(j)=0 n=n+1; else if out(j+50*(i-1)-f2(j)=0 m=m+1; end end end if n>m b(i)=0; else b(i)=1; endend bfor i=1:9 %画出解码后的波形 ,包括原码和解码出的码,进行对比 for j=1+50*(i-1):50*i f(j)=a(i); g(j)=b(i); endendfigure(2);subplot(3,1,1),plot(t,f),axis(0 9*pi -0.2 1.2),xlabel('t'),ylabel('数字基带调制原码');subplot(3,1,2),plot(t,out),axis(0 9*pi -1.2 1.2),xlabel('t'),ylabel('调制好的波形');subplot(3,1,3),plot(t,g),axis(0 9*pi -0.2 1.2),xlabel('t'),ylabel('解码得到的码');Num,Rat=biterr(f,g) case 3,scolor='2FSK'%=生成随机码元、基带信号、调制=%n=8;%随机码元个数N=100;%模拟一个码元的点数K=4;%figure1画四个小图a=randint(1,n)%码元生成bita=;%定义空数组,存放基带信号for i=1:length(a) if a(i)=0 bit1=zeros(1,N); else bit1=ones(1,N); end bita=bita,bit1;%基带信号endfigure(1);subplot(K,1,1);plot(bita,'LineWidth',1.5),title('基带信号'),grid on;axis(0,N*length(a),-2.5,2.5);bitRate=1e3;%每一个码元中采样点的间隔宽度0.001sfc=1e3;%载频1KHZt=linspace(0,1/bitRate,N);tz=; c1=sin(2*pi*t*fc);%载波 c2=sin(2*pi*t*fc*2);%载波 for i=1:length(a) if a(i)=1 tz=tz,c1; else tz=tz,c2; end endsubplot(K,1,2);plot(tz,'LineWidth',1.5);title('2FSK已调信号');grid on;signal=awgn(tz,20,'measured');%加噪subplot(K,1,3);plot(signal,'LineWidth',1.5),grid on;title('信号+噪声')%=解调=%Fs=5e3;%采样频率b1,a1=ellip(4,0.1,40,999.9,1000.1*2/Fs);%设计IIR带通滤波器,阶数为4,通带纹波0.1,阻带衰减40DBb2,a2=ellip(4,0.1,40,1999.9,2000.1*2/Fs);sa=filter(b1,a1,signal);%信号通过该滤波器sb=filter(b2,a2,signal);figure(2);K1=3;%figure2画(3*2)幅图表示解调过程subplot(K1,2,1);plot(sa,'LineWidth',1.5),grid on;title('BPF')subplot(K1,2,2);plot(sb,'LineWidth',1.5),grid on;title('BPF')%=相乘器=%t=linspace(0,1/bitRate,N);c1=sin(2*pi*t*fc);c2=sin(2*pi*t*fc*2);sia=;sib=; for i=1:n sia=sia,c1; sib=sib,c2; end siga=sa.*sia;%乘同频同相sia sigb=sb.*sib;%乘同频同相sibsubplot(K1,2,3);plot(siga,'LineWidth',1.5),grid on;title('相乘器'); subplot(K1,2,4);plot(sigb,'LineWidth',1.5),grid on;title('相乘器'); %=LPF=%Fs=5e3;%抽样频率400HZb1,a1=ellip(4,0.1,40,50*2/Fs);%设计IIR低通滤波器b2,a2=ellip(4,0.1,40,50*2/Fs);%设计IIR低通滤波器sfa=filter(b1,a1,siga);%信号通过该滤波器,输出信号sfasfb=filter(b2,a2,sigb);%信号通过该滤波器,输出信号sfbsubplot(K1,2,5);plot(sfa,'LineWidth',1.5),grid on;title('LPF'); subplot(K1,2,6);plot(sfb,'LineWidth',1.5),grid on;title('LPF');%=抽样判决=%s2a=;s2b=;LL=fc/bitRate*N;i1=LL/2;i2=LL;bitb=;while (i1<=length(sfa) %判决过程 s2a=s2a,sfa(i1)>=0; i1=i1+LL;endwhile (i2<=length(sfb) s2b=s2b,sfb(i2)<=0; i2=i2+LL;end for i=1:n if s2a(i)>s2b(i) bit1=zeros(1,N); else bit1=ones(1,N); end bitb=bitb,bit1;endfigure(1);subplot(K,1,4); plot(bitb,'LineWidth',1.5),grid on;title('解调后信号'); axis(0,length(bitb),-2.5,2.5); case 4,scolor='2DPSK' %- 2DPSK 调制与解调%-%>>>>>>>>>>>>>>>>>>Initial_Part>>>>>>>>>>>>>>>>>>>>>%-fs = 30000;Time_Hold_On = 0.1;Num_Unit = fs * Time_Hold_On;High_Level = ones ( 1, Num_Unit );Low_Level = zeros ( 1, Num_Unit );w = 300;A = 1;%-%>>>>>>>>>>>>>>>>>>Initial_The_Signal>>>>>>>>>>>>>>>%-Sign_Set = 0,1,1,0,1,0,0,1Lenth_Of_Sign = length ( Sign_Set );st = zeros ( 1, Num_Unit * Lenth_Of_Sign );sign_orign = zeros ( 1, Num_Unit * Lenth_Of_Sign );sign_result = zeros ( 1, Num_Unit * Lenth_Of_Sign );t = 0 : 1/fs : Time_Hold_On * Lenth_Of_Sign - 1/fs;%-%>>>>>>>>>>>产生基带信号>>>>>>>>>>>>%-for I = 1 : Lenth_Of_Sign if Sign_Set(I) = 1 sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level; else sign_orign( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level; endend%-%>>>>>>>>>>>>>>>>>>调制部分>>>>>>>>>>>>>>>>>>%-for I = 1 : Lenth_Of_Sign if Sign_Set(I) = 1 st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) + ( pi / 2 ) ); else st( (I-1)*Num_Unit + 1 : I*Num_Unit) = A * cos ( 2 * pi * w * t( (I-1)*Num_Unit + 1 : I*Num_Unit ) ); endendfiguresubplot ( 2,1,1 )plot(t, sign_orign);axis( 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - (A / 2), A + (A / 2) );title ( '原始信号' );gridsubplot ( 2, 1, 2 );plot ( t, st );axis( 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - 3*(A / 2), 3*(A / 2) );title ( '调制后的信号' );grid%-%>>>>>>>>>>>>>>>>>>相乘>>>>>>>>>>>>>>>>>>>>>>>>>>>>>%-dt = st .* cos ( 2 * pi * w * t );figureplot ( t, dt );axis( 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - 3*(A / 2), 3*(A / 2) );title ( '相乘后的波形' );grid%-%>>>>>>>>>>>>>>>>>>>低通滤波部分>>>>>>>>>>>>>>>>>>>>%-N,Wn = buttord( 2*pi*50, 2*pi*150,3,25,'s'); %临界频率采用角频率表示b,a=butter(N,Wn,'s');bz,az=impinvar(b,a,fs); %映射为数字的dt = filter(bz,az,dt);figureplot ( t, dt );axis( 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - 3*(A / 2), 3*(A / 2) );title ( '低通滤波后的波形' );grid%-%>>>>>>>>>>>>>抽样判决 & 逆码变换部分>>>>>>>>>>>>>>>%-for I = 1 : Lenth_Of_Sign if dt(2*I-1)*Num_Unit/2) < 0.25 sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = High_Level; else sign_result( (I-1)*Num_Unit + 1 : I*Num_Unit) = Low_Level; endendfigureplot ( t, sign_result );axis( 0 , Time_Hold_On *( Lenth_Of_Sign + 1), - 3*(A / 2), 3*(A / 2) );title ( '解调后信号' );grid end四、测试数据运行程序命令窗口会显示随进产生的二进制码,对此二进制码进行HDB3编码之后得码元,解码之后得码元以及解码之后得码元与原基带码进行比较得结果 如下图:还会出现调制解调得选择窗口,来进行选择调制解调方式 如下在选择窗口中可以看到有四种调制解调方式选择2ASK进行调制解调可以看到随机得基带信号,2ASK调制后的信号以及2ASK解调后的信号进入菜单 从新选择2PSK可以看到随机产生得2PSK基带信号,2PSK调制后的信号以及2PSK解调后的信号进入菜单栏重新选择2FSK调制解调可以看到随机产生得基带信号,使用2FSK调制后的信号以及使用2FSK解调后的信号进入菜单栏从新选择2DPSK调制解调以上为随机产生得二进制原始信号以及2DPSK调制之后得信号使用2DPSK解调之后的信号五、调试分析1、调试方法:运行程序,按要求测试各功能能否实现,如果不能实现,则寻找问题原因,修改程序后再次运行,再次测试功能能否实现,直到成功实现所有功能。六、参考资料通信原理(第六版) 樊昌信 曹丽娜编国防工业出版社MATLAB程序设计与应用(第二版)刘卫国主编高等教育出版社七、心得体会学习MATLAB没多久,有好多问题很不懂,但经过两周对MATLAB的学习和对MATLAB在信号系统和其他方面应用的实训,我充分了解到了MATLAB的实用性和便捷性,对我以后在其他方面的学习大有好处。MATLAB博大精深,也不可能在短时间内学得很熟。我觉得学习MATLAB首先要把基础掌握.什么是MATLAB的基础呢?个人觉得是首先是矩阵(包括数组),它是MATLAB的核心,如矩阵的输入生成,矩阵处理等;还有绘图,各种画图函数,函数图形的加工;最后是编程,这是最重要的,能解决很多问题,也是后面学习的基础。这三个方面掌握后,就可以做实践的锻炼了,有很多技巧在实践中可以不断地积累。MATLAB语言的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。因为之前学过VB,C语言之类的程序设计,所以MATLAB基础学起来还算容易。它包括了很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的时间,这就需要对程序的结构和算法问题进行改进。MATLAB的自带函数很多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用自己编函数。这一点对程序非常有帮助,可以使程序简单,运行效率高,可以节省很多时间。你把基本的知识学过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充,编程是一点一点积累的,所以你要需做一些随手笔记什么的。编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。尽量摆脱c编程的习惯,总爱用循环,能不用的循环的尽量不用,掌握矢量化的精髓,要大胆的去试,试过才知道可不可以,多去编写程序,运行调试。

    注意事项

    本文(通信原理matlab课程设计报告.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开