当前位置:文档之家› 基于蒙特卡罗法2PSK系统抗噪声性能仿真

基于蒙特卡罗法2PSK系统抗噪声性能仿真

通信原理

课程设计报告

题目:基于蒙特卡罗法2PSK系统抗噪声性能仿真院系:自动化学院与信息工程学院

专业:通信工程

班级:通信071

学号:

姓名:

指导教师:

职称:

2010年12月27日-2010年12月31日

编写MATLAB的M文件,用该文件的采用相干解调法的2PSK系统的抗噪性能进行1000个符号的蒙特卡罗法仿真,画出误码率与信噪比之间的关系曲线,其中信噪比的取值为r=0dB、2dB、4dB、6dB…20dB,同时画出误码率与信噪比的理论曲线,其中信噪比的取值为r=0dB、0.1dB、0.2dB…20dB。

分步实施:

1)熟悉2PSK系统调制解调,熟悉蒙特卡洛法;熟悉误码率计算;

2)编写主要程序;

3)画出系统仿真误码率曲线的系统理论误码率曲线。

1、蒙特卡罗思想概述

蒙特卡罗方法也称为随机模拟方法,有时也称为随机抽样技术或统计实验方法。它的基本思想是:为了求解数学、物理、工程技术以及生产管理等方面的问题,首先建立一个概率模型或随机过程,使它的参数等于问题的解;然后通过对模型或过程的观察或抽样试验来计算所求参数的统计特征,最后给出所求解的近似值。而解得精确度可用估计值的标准误差来表示。

蒙特卡罗方法可以解决各种类型的问题,但总的来说,视其是否涉及随机过程的性态和结果,该方法处理的问题可以分为两类:第一类是确定性的数学问题,首先建立一个与所求解有关的概率模型,使所求的解就是我们所建立模型的概率分布或数学期望;然后对其进行随机抽样观察,即产生随机变量;最后用其算术平均值作为所求解的近似估计值。第二类是随机性问题,被考察的元素更多的受到随机性的影响,一般情况下采用直接模拟方法,即根据实际物理情况的概率法则,用电子计算机进行抽样试验。

在应用蒙特卡罗方法解决实际问题的过程中,大体有如下几个内容:

(1)对求解的问题建立简单而又便于实现的概率统计模型,使所求的解恰好是所建立模型的概率分布或数学期望。

(2)根据概率统计模型的特点和计算实践的需要,尽量改进模型,以便减小方差和费用,提高计算效率。

(3)建立对随机变量的抽样方法,其中包括建立产生伪随机数的方法和建立对所遇到的分布产生随机变量的随机抽样方法。

(4)给出获得所求解的统计估计值及其方差或标准误差的方法。

2、2PSK 系统调制解调原理

相移键控是利用载波的相位变化来传递数字信息,而振幅和频率保持不变。在2PSK 中,通常用初始相位0和π分别表示二进制“1”和“0”。因此,2PSK 信号的时域表达式为

t nT t g a t s c n s n PSK ωcos )()(2??

????-=∑∞-∞→

2PSK 可采用模拟调制方法或键控法进行调制,调制框图如下

2PSK 信号的解调方法是相干解调。由于PSK 信号本身就是利用相位传递信息的,所以在接收端必须利用信号的相位信息来解调信号。下图2PSK 信号相干接收原理方框图。

3、2PSK 的抗噪声性能

通信系统的抗噪声性能是指系统克服加性噪声影响的能力。在数字通信系统中,加性噪声可能使传输码元产生错误。其错误程度一般用误码率来衡量。

2PSK 相干接收时的误码率为:)(2

1r erfc P e =,其中222/σA r =为解调器的输入信噪比。当信噪比r >>1时,上式变成r e e r P -≈

π21。

三、设计流程

利用matlab 对2PSK 进行仿真,在2PSK 调制后对信号加入不同信噪比的高斯噪声,然后进行解调,计算出误码率。

程序流程图如下:

产生数字基带信号

2PSK调制

加入高斯白噪声

2PSK解调

计算误码率四、程序运行结果

结果分析:图中实线是理论上的信噪比与误码率关系曲线,☆则是进行2PSK 调制解调后的仿真分析。由图可见随着信噪比的增大,理论计算与实际仿真得到的误码率均在下降。

五、实验源程序

见附录

六、总结与体会

通过这次通信原理课程设计实践,我复习了MATLAB编程语言的基本概念、语法、语义和数据类型的使用特点,加深了对课堂所学理论知识的理解,掌握了运用结构化程序设计的基本思想和方法,更重要的是培养了自己的自学能力。因为这是我们第二次接触MATLAB编程语言,在编写程序以及调试的过程中遇到了很多困难,但是我通过去图书馆查找资料,请教同学老师,再自己一点点改善程序,最终编写出一个比较完善的程序,实现了所有要求功能,这是最值得我欣慰的一点。

以下是我的几点切身感受:

(一)编写程序需要一个清醒的头脑,明确的思路,同时也要有耐心毅力。

刚拿到程序设计课题时,我感觉一片茫然,因为在之前的学习中,只是在一些例题中接触过MATLAB语言,甚至没有看过一些基础的书籍,所以初次遇到一个实际问题,感觉无从下手。由于自己对MATLAB的设计不够熟悉,同时对MATLAB 的基本语句掌握不扎实,编写程序遇到了很大的困难,不过通过请教老师,和同学共同探讨后思路一下子豁然开朗,掌握了基本设计思路之后,后面的编程就顺利多了。至此,我真真体会到清晰地思路对成功编写一个程序的重要性。

当然成功编写一个程序绝非易事,之前,我总以为程序能够正常运行,就代表着编程成功,后来我才发现我大错特错了。我用了三天时间,完成了程序的编写、改错,但我立刻发现尽管程序能够正常运行,部分功能却不完善,甚至不能实现。经过一次又一次调试、修改又修改,一点一点发现问题并改正,我才真正发现编程远没有想象中的简单。它需要的不仅是清晰地编程思路、编程技巧,还

需要有耐心有毅力,不要放弃。

(二)我们在大学需要学习的不仅是基础知识、专业知识,更重要的是一种学习能力。

正如老师所说学习是终生的,因此学习能力也就能让我们受益终生。由于课堂时间有限,MATLAB的许多知识需要靠我们自学,实践也证明我们是有自学的潜能的,通过自学相关知识,查找资料,请教老师,最终掌握知识。因此,这次课程设计时间培养了我们的自学能力。

(三)要学会向他人请教,与他人合作。

在编程过程中,我遇到了许多问题,通过查找资料也未能找到原因,每次我想老师请教,老师总能不厌其烦地一点点讲解。有时,老师为了帮我在那几百行的程序中找到问题,花上一个多小时,这让我非常感动。大学中的老师是每个大学生的好资源,他的博学、重教,向他们请教会有很大收获。

在编程过程中,我与我组成员共同讨论,为对方查找错误,提示建议,在这个过程中我收获甚多,也培养了自己的合作精神。

(四)要学会总结,提高。

在编程过程中,我发现自己的程序还有很多地方可以完善。程序的界面可以做得更加人性化,这样使用户使用更加方便,画图函数也还可以改进,同时也使整个设计的显得干净利落。通过不断的总结才会使自己不断的得到提高。

七、参考文献

【1】冯象初,甘小冰. 数值泛函与小波理论西安:西安电子科技大学出版社,2003.5

【2】樊昌信,曹丽娜. 通信原理(第六版)北京:国防工业出版社, 2010.6

【3】 Cahn C R. Performance of Digital Phase-Modulation Communication Systems.IRE Trans.On Commun.Systems 1957.7

附录(源程序)

主程序:

SNRa=0:1:20; %每1dB计算误码率从1—20dB SNRb=0:0.1:20;

for i=1:length(SNRa)

[ps]=pskmoto(SNRa(i)); %蒙特卡罗法仿真

wumalv(i)=ps;

end;

for i=1:length(SNRb)

SNR=10^(SNRb(i)/10); %信噪比dB转化为数值

theo_err_prb(i)=(1/2)*erfc(sqrt(SNR)); %计算理论值

end;

semilogy(SNRa,wumalv,'p'); %仿真结果,用☆画出

hold

semilogy(SNRb,theo_err_prb); %理论曲线

用蒙特卡罗法进行仿真:

function[ps]=pskmoto(snr_in_dB)

N=1000; %进行1000个符号的蒙特卡罗法仿真E=1; %一个信号能量为1

snr=10^(snr_in_dB/10); %将信噪比转化为数值大小

sgma=sqrt((E/snr)/2); %计算噪声的标准差

n=0; %初始化各个参数

s0=0;

s1=1;

for i=1:N, %由随机数产生输入的0 1 序列共1000个 temp=rand;

if(temp<0.5) %小于0.5输入为0

dsource1(i)=0;

else

dsource1(i)=1; %大于0.5输入为1

end;

end;

numofsymbolerror=0; %误码数初始为0

for i=1:N,

n=gngauss(0,sgma); %产生高斯分布变量

if(dsource1(i)==0),

r=s0+n; %输入信号加入高斯白噪声

else

r=s1+n;

end;

%输出信号判断——加入噪声后判断输出信号是0还是1 %

if(r>1)

if(r-1

decis1=1;

else

decis1=0;

end;

elseif(r<0)

if(1-r>0-r)

decis1=0;

else

decis1=1;

end;

else

if(1-r>r-0)

decis1=0;

else

decis1=1;

end;

end;

if(decis1~=dsource1(i)), %如果输出信号与输入不同,误码数加一 numofsymbolerror=numofsymbolerror+1;

end;

end;

ps=numofsymbolerror/(N); %计算误码率

高斯随机数产生函数:

function grsv=gngauss(m,sgma) %gngauss产生均值为m,标准偏差

%sgma的,相互独立的高斯随机过程。u=rand; %在区间(0,1)内的均匀随机变量

z=sgma*(sqrt(2*log(1/(1-u)))); % 瑞利分布随机变量

u=rand; %在区间(0,1)内的均匀随机变量

grsv=m+z*cos(2*pi*u); %由瑞利分布和高斯分布的关系产生高斯分布

相关主题
文本预览
相关文档 最新文档