通信仿真课程设计.docx
- 文档编号:6643940
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:25
- 大小:72.51KB
通信仿真课程设计.docx
《通信仿真课程设计.docx》由会员分享,可在线阅读,更多相关《通信仿真课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
通信仿真课程设计
基于MATLAB的点对点通信仿真
摘要
在当前飞速发展的信息时代,随着数字通信技术计算机技术的发展,以及通信网络与计算机网络的相互融合,信息技术已成为21世纪社会国际化的强大动力。
Matlab软件包含众多的功能各异的工具箱,涉及领域包括:
数字信号处理、通信技术、控制系统、神经网络、模糊逻辑、数值统计、系统仿真和虚拟现实技术等。
作为一个功能强大的数学工具软件,在很多领域中得到了广泛的应用。
本文利用Matlab对点对点通信进行仿真实验,实现信号从信源到信宿过程的模拟并获得信噪比与误码率的曲线图,研究了相移键控调制下信噪比与误码率的关系并比较了不同进制相移键控调制下误码率—信噪曲线的异同,同时也研究了不同中继信道对误码率—信噪比曲线的影响
关键字:
MATLAB仿真;点对点通信;PSK;中继信道;误码率
1引言
1.1课程设计的目的和意义
巩固所学的专业技术知识,培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力,培养初步的独立设计能力;通过课程设计仿真试验,了解并掌握通信系统、通信调制解调等技术的一般设计方法,训练并提高学生在理论计算、结构设计、工程绘图、查阅设计资料、运用标准与规范和应用计算机等方面的能力,更好地将理论与实践相结合,提高综合运用所学理论知识独立分析和解决问题的能力。
并且掌握Matlab的简单操作方法。
1.2课程设计内容
1)设计一个四进制相移键控调制系统,绘出误码率与信噪比的关系曲线。
2)绘制不同进制相移键控下误码率与信噪比的关系曲线,并分析是否与理论相符,得出结论。
3)设计一个加中继且的四进制相移键控系统,绘出其误码率与信噪比的关系曲线。
4)绘出四进制相移系统加不同跳数中继情况下其误码率与信噪比的关系曲线,并分析是否与理论相符,得出结论。
2仿真环境简介
本次课程设计使用MATLAB,运用蒙特•卡罗方法(MonteCarlomethod),对通信系统进行仿真。
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
MATLAB是一个包含大量计算算法的集合。
其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++ 。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
蒙特•卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。
是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
这里主要使用MATLAB提供的功能,包括:
数值和符号计算,工程与科学绘图等,实现蒙特•卡罗过程,对通信系统进行仿真。
最后给出几种不同通信系统的通信效果的可视化结果,并对结果进行分析,比较。
3系统理论分析
3.1通信系统模型
图2-1:
通信系统模型
如图2-1所示为通信系统的模型,由一下几个部分组成:
信息源(简称信源):
把各种消息转换成原始电信号,如麦克风。
信源可分为模拟信源和数字信源。
发送设备:
产生适合于在信道中传输的信号。
信道:
将来自发送设备的信号传送到接收端的物理媒质。
分为有线信道和无线信道两大类。
信道是信息论中的一个主要概念。
它是用来传送信息的,所以理论上应解决它能无错误地传送的最大信息率,也就是计算信道容量问题,并证明这样的信息率是能达到或逼近的,最好还能知道如何实现,这就是信道编码问题。
在理论研究中,一条信道往往被分成信道编码器、信道本身和信道译码器。
人们可以变更编码器、译码器以获得最佳的通信效果,因此编码器、译码器往往是指易于变动和便于设计的部分,而信道就指那些比较固定的部分。
但这种划分或多或少是随意的,可按具体情况规定。
例如调制解调器和纠错编译码设备一般被认为是属于信道编码器、译码器的,但有时把含有调制解调器的信道称为调制信道;含有纠错编码器、译码器的信道称为编码信道。
信息通过信道传输,由于物理介质的干扰和无法避免噪声,信道的输入和输出之间仅具有统计意义上的关系,在做出唯一判决的情况下将无法避免差错,其差错概率完全取决于信道特性。
因此,一个完整、实用的通信系统通常包括信道编译码模块。
视频信号在传输前都会经过高度压缩以降低码率,传输错误会对最后的图像恢复产生极大的影响,因此信道编码尤为重要。
噪声源:
集中表示分布于通信系统中各处的噪声。
接收设备:
从受到减损的接收信号中正确恢复出原始电信号。
受信者(信宿):
把原始电信号还原成相应的消息,如扬声器等。
3.2相移键控原理
数字相位调制(phaseshiftkeying,PSK)又称相移键控。
二进制相移键控记做2PSK是相移键控最简单的形式,还有多进制相移键控MPSK是二进制相移键控的推广,本次仿真实验主要用到了二进制相移键控(BPSK),四进制相移键控(QPSK)及八进制相移键控(8PSK)三种调制方式
3.2.1二进制相移键控原理
二进制相移键控是用二进制数字信号去控制载波的相位,使已调等幅、恒定载波的载波相位与待发数字信号相对应;只有两种对应状态,例如载波相位以0相与
相分别代表“1”(传号)和“0”(空号)。
如果数字基带信号g(t)的的幅度是1、宽度为
的矩形脉冲,则2PSK信号可表示为:
取0时代表“1”,取
时代表“0”
由于2PSK信号相当于DSB信号,因而不能采用包络解调,要采用相干解调;但必须在DSB解调后加一抽样判决以便恢复原数字信号。
其判决准则为:
抽养值大于0,判为1;抽养值小于0,判为0
下图为2PSK信号的波形图及矢量图
图3-1:
2PSK信号波形图图3-2:
2PSK信号矢量图
3.2.2多进制相移键控调制原理
多进制相移键控是二进制的推广。
它用多个相位状态的正弦震荡分别表示不同的数字信息,通常相位用M=
计算,有2,4,8,16相制等,M取不同的相位,分别于n为二进制码元的不同组合相对应。
其信号的产生于BPSK类似只是维度不同在处理时略有差别,在此不再详细介绍
图3-3和图3-4分别为QPSK信号及8PSK信号的矢量图
图3-3:
QPSK信号矢量图图3-4:
8PSK信号矢量图
4仿真过程基于Matlab的实现
4.1仿真条件及符号说明
4.1.1仿真条件:
(1)整个通信的等效高斯白噪声方差为1;
(2)假设信道估计是理想的;
(3)经过不同跳数中继的QPSK信号总的增益相同
4.1.2符号说明
(1)ray为瑞利衰落信道
(2)n为高斯噪声
(3)r为信号经过瑞利衰落信道后的接受信号
(4)y为接收端对接收信号还原处理后的信号
(5)snr为信噪比
(6)xigma为噪声方差
(7)ber为误码率
(8)li为单位虚数i
(9)s为调制信号的相位
(10)G为经过中继转发是信号的增益
4.2仿真过程的实现
(1)调制信号的产生(以QPSK为例)
产生两个(0,1)的随机数,根据两个数的范围,规定发送的两位原码的值及其相位
ss1=rand(1,2);
if((ss1(1,1)>0.5)&&(ss1(1,2)>0.5))
s1(1,1)=1;
s1(1,2)=1;
s=exp(1i*(pi/4));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)>0.5))
s1(1,1)=0;
s1(1,2)=1;
s=exp(1i*pi*(3/4));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)<0.5))
s1(1,1)=0;
s1(1,2)=0;
s=exp(1i*pi*(5/4));
else
s1(1,1)=1;
s1(1,2)=0;
s=exp(1i*pi*(7/4));
(2)信道的产生
ray=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
(3)高斯噪声的产生
n=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
(4)接收信号
r=s*(snr(L)*xigma)*ray+n;
(5)接收信号的还原
y=r/ray;
(6)接受判决的实现
根据接受信号最终落在矢量图中的位置判断发送的QPSK信号的值,程序如下:
if(real(y)>0)
y1=1;
else
y1=-1;
end
if(imag(y)>0)
y2=1;
else
y2=-1;
end
if((y1==1)&&(y2==1))
rs=[1,1];sre=exp(1i*(pi/4));
elseif((y1==-1)&&(y2==1))
rs=[0,1];sre=exp(1i*pi*(3/4));
elseif((y1==-1)&&(y2==-1))
rs=[0,0];sre=exp(1i*pi*(5/4));
else
rs=[1,0];sre=exp(1i*pi*(7/4));
(7)信号经过中继转发过程的实现
r=s*(snr(L)*xigma)*ray+n;
y1=r/ray;
ray1=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
n1=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
r1=y1*ray1*G1+n1;
5仿真结果
仿真结果如下图所示:
图5-1为8PSK,QPSK,BPSK信号加高斯白噪声经过相同信道,其误码率与信噪比的关系曲线
图5-2为QPSK信号分别经过一跳中继,两跳中继及三跳中继后信噪比与误码率的关系曲线
图5-1:
M进制相位调制信噪比—误码率曲线图
图5-2:
对比加不同跳数中继时信噪比与误码率的关系
6仿真模型分析
6.1模型结果分析
图5-1所示为M进制相位调制信号误码率—信噪比的关系曲线
由图可知:
误码率随着信噪比的增大而减小,即要想减小信号在传输过程中的失真度必须增加信号的发射功率以减小信号的误码率;对于BPSK、QPSK及8PSK相位调制,在相同信噪比的情况下BPSK的误码率最小QPSK次之,8PSK的误码率最大;同时,要想实现想同的误码率,8PSK调制时必须提供更大的信号功率,QPSK次之,BPSK所需的信号功率最小。
然而对于MPSK系统,M的值越大,其功率谱的主瓣越大频带利用率越高,发送数据的速率越快。
因此为提供较高的服务质量,在实际的运用中需均衡考虑信号的误码率及发送速率,因而MPSK系统一般很少取较大的M值,一般取M
16,并且以M=4的QPSK使用最多,其次是8PSK,16PSK及BPSK都较少使用。
图5-2所示为在信号的总增益相同的情况下对比QPSK信号加不同跳数中继时信噪比与误码率的关系的曲线图。
由图可知在相同信噪比的情况下,信号所经过的中继跳数越多其误码率就越大,原因是所经过的中继跳数增加后所加入噪声也怎加了,同时每经过一个信道时也会增加数据传输的误码率。
6.2模型优缺点分析及改进方案
6.2.1优缺点分析
本文对MPSK信号经高斯信道传输的接受误码率进行蒙特卡罗仿真,仿真过程取了1000000个点,得到了较为准确的信噪比—误码率的关系曲线;同时本文还考虑了加入中继时的情况,对比了加不同跳数中继对信噪比—误码率曲线的影响获得了比较正确的结论;当然本模型也有一些不足之处,例如通信系统比较简单没有加入编码和解码的过程,算法的设计也还不是特别简化,所获得的信噪比与误码率的关系曲线也没有和实际的曲线进行对比,数据的说服力还不够强。
6.2.2改进发案
由于时间有限,我们现在所学的知识有限,整个仿真模型存在大量的不足之处,我在此提出以下改进方案:
(1)本通信仿真模型还可以加入编码解码的过程
(2)加中继时的模型还可以讨论一下协作中继时的情况
(3)本模型还可以用Simulink模块来进行仿真
(4)可以把仿真所获得的的曲线与实际情况下的信噪比—误码率的曲线拿来对比
7小结体会
历时两个月的软件课程设计让我们受益良多,从开始不懂matlab做起课程设计来一头雾水到后期可以和老师讨论自己想法,这中间都离不开老师的悉心教诲。
这次软件课程设计的开展,其目的在于让我们了解通信过程是如何实现的,以及让我们深入了解matlab是如何作为仿真软件仿真通信过程并结合相关的实例让我们在原有了解的基础上设计完成老师布置的课题。
在进行软件课程设计的过程中我们遇到了一系列的问题,首先是对于matlab软件的不熟悉,好在在大家的摸索和交流以及和老师的交流中慢慢熟悉。
其次,由于在本专业的推荐课表中未导入通信原理等相关课程,使得我们对于调制解调,信道,编码,接受判别等方面并不了解,大家一起查阅相关书籍,积极交流,积极主动的询问老师,自己尝试编码,错误共享,成果共享,在老师的帮助下将上述模糊的概念一一攻克,并在错误中学会了进步。
在老师未布置课程题目时,老师给了我们积极思考的空间,通过自己在个人电脑上的编码实践和结合借阅的有关书籍,老师传给我们的实例和学习资料,自己摸索,在上课时间和老师沟通,进行每人为时3分钟的问题陈述,自己进程的陈述,结合陈述,老师给予相应的解答和指导。
大家都表示在这个自主学习的过程中受益匪浅。
老师布置课程设计题目后,大家结合开始做的准备工作一步一个脚印的慢慢完善我们的程序和功能,在学会如何对多进制调制进行编码的基础上进行课程题目相关的仿真,并针对matlab仿真的结果进行交流,在原本点对点的单信道通信的基础上加了中继信道,实现了对于不同跳数的仿真,并进行了对比。
同时由于不同的调制方式对误码率也有一定的影响,我们在基于多进制调制方式仿真上做了一个单信道的8PSK,QPSK,BPSK不同调制方式对接受端误码率的影响的仿真,并对结果进行了对比得出了相同信噪比时BPSK的误码率最低,QPSK其次,8PSK的误码率最高的仿真结果。
在本次课程设计实训中,我们认识到了实训远比理论学习更有乐趣,仿真的意义就在于无需花费过大的成本就可以在计算机上通过matlab等仿真软件模拟通信的过程,对最终的结果有一个大致的认识和了解,并与理论结果进行比对,找出产生差异的原因,同时节省了移动运营商的成本。
而对于这历时两个月的自我学习和共同学习,我们意识到学习有时候不是一个人的过程,它可以是一群人共同进步的过程。
在交流和沟通中共同学习,共同协作,共同完成课题。
在老师的帮助、在理解的基础上、在实践和理论相结合的基础上学习,无疑是进步和积极的。
总之,在这次软件课程设计的学习过程中无论是学习方法还是软件仿真方法,我们都获益匪浅,同时也感谢在课程设计过程中智慧老师不遗余力的教诲和给予我们的帮助。
过程是艰辛的,但成果是美丽的。
参考文献
[1]王秉钧,冯玉珉通信原理清华大学出版社
[2]樊昌信.通信原理.国防工业出版社
[3]黄载禄,殷蔚华.通信原理.科学出版社
[4]李宗豪.基本通信原理.北京邮电大学出版社
[5]甘勤涛.MATLAB2012数学计算与工程分析从入门到精通.机械工业出版社
[6]求是科技编著.MATLAB7.0从入门到精通.人民邮电出版社
[7](美)WilliamJ.PalmIII著;黄开枝译.MAtlab基础教程.清华大学出版社
附录
部分程序代码:
18PSK信噪比—误码率作图代码
clearall;
clf;
snrindb=0:
1:
20;
snr=10.^(0.1*snrindb);
xigma=1;
count=zeros(1,length(snrindb));
ber8PSK=zeros(1,length(snrindb));
forL=1:
length(snrindb)
fornum=1:
1000000
ss1=rand(1,3);
if((ss1(1,1)>0.5)&&(ss1(1,2)>0.5)&&(ss1(1,3)>0.5))
s1=[1,1,1];
s=exp(1i*(pi/8));
elseif((ss1(1,1)>0.5)&&(ss1(1,2)>0.5)&&(ss1(1,3)<0.5))
s1=[1,1,0];
s=exp(1i*pi*(3/8));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)>0.5)&&(ss1(1,3)<0.5))
s1=[0,1,0];
s=exp(1i*pi*(5/8));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)>0.5)&&(ss1(1,3)>0.5))
s1=[0,1,1];
s=exp(1i*pi*(7/8));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)<0.5)&&(ss1(1,3)>0.5))
s1=[0,0,1];
s=exp(1i*pi*(9/8));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)<0.5)&&(ss1(1,3)<0.5))
s1=[0,0,0];
s=exp(1i*pi*(11/8));
elseif((ss1(1,1)>0.5)&&(ss1(1,2)<0.5)&&(ss1(1,3)<0.5))
s1=[1,0,0];
s=exp(1i*pi*(13/8));
elseif((ss1(1,1)>0.5)&&(ss1(1,2)<0.5)&&(ss1(1,3)>0.5))
s1=[1,0,1];
s=exp(1i*pi*(15/8));
end
ray=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
n=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
r=s*(snr(L)*xigma)*ray+n;
y=r/ray;
a=real(y);
b=imag(y);
c=atan(b/a);
if(a>0&&b>0&&c>=0&&c<(pi/4))
rs=[1,1,1];
elseif(a>0&&b>0&&c>=(pi/4)&&c<(pi/2))
rs=[1,1,0];
elseif(a<0&&b>0&&c>=(-pi/2)&&c<(-pi/4))
rs=[0,1,0];
elseif(a<0&&b>0&&c>=(-pi/4)&&c<0)
rs=[0,1,1];
elseif(a<0&&b<0&&c>=0&&c<(pi/4))
rs=[0,0,1];
elseif(a<0&&b<0&&c>=(pi/4)&&c<(pi/2))
rs=[0,0,0];
elseif(a>0&&b<0&&c>=(-pi/2)&&c<(-pi/4))
rs=[1,0,0];
elseif(a>0&&b<0&&c>=(-pi/4)&&c<0)
rs=[1,0,1];
end
if(rs(1,1)~=s1(1,1)||rs(1,2)~=s1(1,2)||rs(1,3)~=s1(1,3))
count(L)=count(L)+1;
end
end
ber8PSK(L)=count(L)/1000000;
end
semilogy(snrindb,ber8PSK,'r>-');
gtext('8PSK')
holdon;
2QPSK信噪比—误码率作图代码
snrindb=0:
1:
20;
snr=10.^(0.1*snrindb);
xigma=1;
count=zeros(1,length(snrindb));
berQPSK=zeros(1,length(snrindb));
forL=1:
length(snrindb)
fornum=1:
1000000
ss1=rand(1,2);
if((ss1(1,1)>0.5)&&(ss1(1,2)>0.5))
s1(1,1)=1;
s1(1,2)=1;
s=exp(1i*(pi/4));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)>0.5))
s1(1,1)=0;
s1(1,2)=1;
s=exp(1i*pi*(3/4));
elseif((ss1(1,1)<0.5)&&(ss1(1,2)<0.5))
s1(1,1)=0;
s1(1,2)=0;
s=exp(1i*pi*(5/4));
else
s1(1,1)=1;
s1(1,2)=0;
s=exp(1i*pi*(7/4));
end
ray=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
n=sqrt(1/2)*(randn(1,1)+1i*randn(1,1));
r=s*(snr(L)*xigma)*ray+n;
y=r/ray;
if(real(y)>0)
y1=1;
else
y1=-1;
end
if(imag(y)>0)
y2=1;
else
y2=-1;
end
if((y1==1)&&(y2==1))
rs=[1,1];sre=exp(1i*(pi/4));
elseif((y1==-1)&&(y2==1))
rs=[0,1];sre=exp(1i*pi*(3/4));
elseif((y1==-1)&&(y2==-1))
rs=[0,0];sre=exp(1i*pi*(5/4));
else
rs=[1,0];sre=exp(1i*pi*(7/4));
end
if((rs(1,1)~=s1(1,1))||rs(1,2)~=s1(1,2))
count(L)=count(L)+1;
end
end
berQPSK(L)=count(L)/1000000;
end
semilogy(snrindb,berQPSK,'r>-');
gtext('QPSK')
holdon;
3BPSK信噪比—误码率作图程序
snrindb=0:
1:
20;
snr=10.^(0.1*snrindb);
xigma=1;
count=zeros(1,length(snrindb));
ber=zeros(1,length(snrindb));
forL=1:
length(snrindb)
fornum=1:
1000000
ss1=rand;
ifss1>0.5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 仿真 课程设计