您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 基于蒙特卡罗法2FSK系统抗噪声性能仿真2
通信原理课程设计报告题目:基于蒙特卡罗法2FSK系统抗噪声性能仿真院系:专业:班级:姓名:指导教师:2010年12月27日-2010年12月31日-1-一、实验要求编写MATLAB的M文件,用该文件的采用相干解调法的2FSK系统的抗噪性能进行1000个符号的蒙特卡罗法仿真,画出误码率与信噪比之间的关系曲线,其中信噪比的取值为r=0dB、2dB、4dB、6dB…10dB,同时画出误码率与信噪比的理论曲线,其中信噪比的取值为r=0dB、0.1dB、0.2dB…10dB。分步实施:1)熟悉2FSK系统调制解调,熟悉蒙特卡洛法;熟悉误码率计算;2)编写主要程序;3)画出系统仿真误码率曲线的系统理论误码率曲线。-2-二、实验原理1、蒙特卡罗思想概述蒙特卡罗方法也称为随机模拟方法,有时也称为随机抽样技术或统计实验方法。它的基本思想是:为了求解数学、物理、工程技术以及生产管理等方面的问题,首先建立一个概率模型或随机过程,使它的参数等于问题的解;然后通过对模型或过程的观察或抽样试验来计算所求参数的统计特征,最后给出所求解的近似值。而解得精确度可用估计值的标准误差来表示。蒙特卡罗方法可以解决各种类型的问题,但总的来说,视其是否涉及随机过程的性态和结果,该方法处理的问题可以分为两类:第一类是确定性的数学问题,首先建立一个与所求解有关的概率模型,使所求的解就是我们所建立模型的概率分布或数学期望;然后对其进行随机抽样观察,即产生随机变量;最后用其算术平均值作为所求解的近似估计值。第二类是随机性问题,被考察的元素更多的受到随机性的影响,一般情况下采用直接模拟方法,即根据实际物理情况的概率法则,用电子计算机进行抽样试验。在应用蒙特卡罗方法解决实际问题的过程中,大体有如下几个内容:(1)对求解的问题建立简单而又便于实现的概率统计模型,使所求的解恰好是所建立模型的概率分布或数学期望。(2)根据概率统计模型的特点和计算实践的需要,尽量改进模型,以便减小方差和费用,提高计算效率。(3)建立对随机变量的抽样方法,其中包括建立产生伪随机数的方法和建立对所遇到的分布产生随机变量的随机抽样方法。(4)给出获得所求解的统计估计值及其方差或标准误差的方法。2、2FSK系统调制解调原理频移键控是利用载波的频率变化来传递数字信息。在2FSK中,载波的频率随二进制基带信号在f1和f2两个频率间变化。用f1和f2分别表示二进制“1”和“0”。因此,2FSK信号的时域表达式为)cos()()cos()()(212nnsnnnsnFSKtnTtgatnTtgate-3-2FSK可采用调频方法或键控法进行调制,调制框图如下2FSK信号的解调方法是相干解调。由于FSK信号本身就是利用频率传递信息的,所以在接收端必须利用信号的频率信息来解调信号。下图2FSK信号相干接收原理方框图。3、2FSK的抗噪声性能通信系统的抗噪声性能是指系统克服加性噪声影响的能力。在数字通信系统中,加性噪声可能使传输码元产生错误。其错误程度一般用误码率来衡量。2FSK相干接收时的误码率为:)2/(21rerfcPe,其中222/Ar为解调器的输入信噪比。当信噪比r1时,上式变成2/21reerP。带通滤波器1相乘器低通滤波器抽样判决器cos1输出定时脉冲带通滤波器2相乘器cos2低通滤波器-4-三、设计流程利用matlab对2FSK进行仿真,在2FSK调制后对信号加入不同信噪比的高斯噪声,然后进行解调,计算出误码率。程序流程图如下:四、程序运行结果产生数字基带信号2FSK调制加入高斯白噪声2FSK解调计算误码率-5-结果分析:图中实线是理论上的信噪比与误码率关系曲线,*则是进行2FSK调制解调后的仿真分析。由图可见随着信噪比的增大,理论计算与实际仿真得到的误码率均在下降,但是由于仿真码元数目比较少,误码率只能达到接近410五、实验源程序见附录六、总结与体会这次课设我受益匪浅,不但复习了通信原理的相关知识而且还更加深了对matlab的理解与应用。在课设过程中我遇到了很多问题,但是最后还是一一解决了。通过上网,去图书馆查资料,请教老师同学我解决了很多难题同时也掌握了大量新知识。我个人感觉像通信原理这种课程只有通过课设这种方式才能让我们掌握书本上的抽象知识熟练运用。通过这次通信原理课程设计实践,我复习了MATLAB编程语言的基本概念、语法、语义和数据类型的使用特点,加深了对课堂所学理论知识的理解,掌握了运-6-用结构化程序设计的基本思想和方法,更重要的是培养了自己的自学能力。因为这是我们第二次接触MATLAB编程语言,在编写程序以及调试的过程中遇到了很多困难,但是我通过去图书馆查找资料,请教同学老师,再自己一点点改善程序,最终编写出一个比较完善的程序,实现了所有要求功能,这是最值得我欣慰的一点。当然成功编写一个程序绝非易事,之前,我总以为程序能够正常运行,就代表着编程成功,后来我才发现我大错特错了。我用了三天时间,完成了程序的编写、改错,但我立刻发现尽管程序能够正常运行,部分功能却不完善,甚至不能实现。经过一次又一次调试、修改又修改,一点一点发现问题并改正,我才真正发现编程远没有想象中的简单。它需要的不仅是清晰地编程思路、编程技巧,还需要有耐心有毅力,不要放弃。七、参考文献【1】罗建军杨琦精讲多练matlab西安交通大学出版社【2】樊昌信.曹丽娜.通信原理(第六版)北京:国防工业出版社附录(源程序)主程序:a=0:2:10;b=0:0.1:10;fori=1:length(a)monizhi(i)=snr2pb(a(i));%用蒙特卡罗法仿真end;fori=1:length(b)c=10^(b(i)/10);%把DB变为数值lilunzhi(i)=(1/2)*erfc(sqrt(c/2));%用公式算理论误码率end;subplot(2,1,1);semilogy(a,monizhi,'*');holdsemilogy(b,lilunzhi);xlabel('信噪比(dB)');ylabel('误码率');legend('仿真比特误码率','理论比特误码率');function[p]=snr2pb(snr_in_dB)-7-N=1000;%用1000个符号进行蒙特卡罗仿真Eb=1;%有用信号能量snr=10^(snr_in_dB/10);sgma=sqrt(Eb/(snr));%噪声的标准差fori=1:N%由随机数差生的输入的01序列共1000个temp=rand;if(temp0.5)%小于0.5判为0dsource(i)=0;elsedsource(i)=1;%大于0.5判为1end;end;subplot(2,1,2);i=1:1000;plot(i,dsource(i));axis([0100001])numoferr=0;%误码个数初始化为0fori=1:Nif(dsource(i)==0)x1=sqrt(2*Eb)+gngauss(sgma);%上支路信号波形x2=gngauss(sgma);%下支路信号波形elsex1=gngauss(sgma);x2=sqrt(2*Eb)+gngauss(sgma);end;if(x1x2)%上支路大于下支路时判为0decis=0;elsedecis=1;%下支路大于上支路时判为0end;if(decis~=dsource(i))%若输入与输出不一致误码数加1numoferr=numoferr+1;end;end;p=numoferr/N;%误码率为误码的个数除以总码数function[n1,n2]=gngauss(m,sgma)%gngauss产生均值为m,标准偏差-8-ifnargin==0m=0;sgma=1;elseifnargin==1sgma=m;m=0;endu=rand;%在区间(0,1)内的均匀随机变量z=sgma*(sqrt(2*log(1/(1-u))));%瑞利分布随机变量u=rand;n1=m+z*cos(2*pi*u);%由瑞利分布和高斯分布的关系产生高斯分布n2=m+z*sin(2*pi*u);
本文标题:基于蒙特卡罗法2FSK系统抗噪声性能仿真2
链接地址:https://www.777doc.com/doc-5469145 .html