当前位置:文档之家› 二进制基带通信系统的蒙特卡洛仿真matlab实现

二进制基带通信系统的蒙特卡洛仿真matlab实现

一clc;clear all;ts=0.0001;fc=25;t=[-0.05:ts:0.05];df=0.02;if t<1&t>=0.1;m=t;elseif t>=1&t<1.9 ;m=-t+2;else t>=1.9&t<0.1 ;m=0.1;endc=cos(2*pi*fc*t);m_n=m/max(abs(m));u=m_n*max(abs(m)).*c;s=u.*c;f=-10:df:10;subplot(4,1,1);plot(t,u);plot(t,u);title('解调信号');xlabel('t');ylabel('幅度'); subplot(4,1,2);plot(f,abs(fftshift(u)));title('解调信号频谱');xlabel('t');ylabel('幅度');subplot(4,1,3);plot(t,s);title('已调信号 ');xlabel('t');ylabel('幅度');subplot(4,1,4);plot(f,abs(fftshift(s)));title('已调信号频谱');xlabel('t');ylabel('幅度');实验二二进制基带通信系统的蒙特卡洛仿真一、实验目的1、理解蒙特卡洛仿真方法的原理;2、掌握使用蒙特卡洛法仿真通信系统的方法。

二、实验内容1、用蒙特卡洛法仿真使用单极性信号的二进制基带通信系统,绘制误码率与信噪比的关系曲线图;2、用蒙特卡洛法仿真使用双极性信号的二进制基带通信系统,绘制误码率与信噪比的关系曲线图。

三、实验原理1、蒙特卡洛仿真的基本原理由概率定义知,某事件的概率可以用大量试验中该事件发生的频率来估算,当样本容量足够大时,可以认为该事件的发生频率即为其概率。

因此,可以先对影响其可靠度的随机变量进行大量的随机抽样,然后把这些抽样值一组一组地代入功能函数式,确定结构是否失效,最后从中求得结构的失效概率。

蒙特卡罗法正是基于此思路进行分析的。

设有统计独立的随机变量Xi(i=1,2,3,…,k),其对应的概率密度函数分别为fx1,fx2,…,fxk,功能函数式为Z=g(x1,x2,…,xk)。

首先根据各随机变量的相应分布,产生N组随机数x1,x2,…,xk值,计算功能函数值Zi=g(x1,x2,…,xk)(i=1,2,…,N),若其中有L组随机数对应的功能函数值Zi≤0,则当N→∞时,根据伯努利大数定理及正态随机变量的特性有:结构失效概率,可靠指标。

从蒙特卡罗方法的思路可看出,该方法回避了结构可靠度分析中的数学困难,不管状态函数是否非线性、随机变量是否非正态,只要模拟的次数足够多,就可得到一个比较精确的失效概率和可靠度指标。

特别在岩土体分析中,变异系数往往较大,与JC 法计算的可靠指标相比,结果更为精确,并且由于思路简单易于编制程序。

2、蒙特卡洛仿真的工作过程在解决实际问题的时候应用蒙特·卡罗方法主要有两部分工作:·用蒙特卡罗方法模拟某一过程时,需要产生各种概率分布的随机变量。

·用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。

四、实验方法1、第一个实验内容的实验方法①实验框图如下:均均均均②实验方法第一步:先产生一个等概率出现并且统计独立的二进制0和1的序列作为数据源。

方法是:用一个“均匀分布随机数产生器”产生在(0,1)范围均匀分布的随机数s,送到“二进制数据源”进行处理,如果输入的随机数在(0,0.5)以内,“二进制数据源”的输出就是0;否则输入为1。

设产生的信号比特能量为E b。

第二步:仿真产生信道上的加性高斯噪声。

方法是:利用“高斯分布随机数产生器”分别产生一个均值为零,方差为σ2=E b N0/2的高斯分布随机数n,这个随机数将加在输入的二进制数据序列上。

为了方便,我们将信号比特能量归一化,即设E b=1。

这样一来,信噪比SNR(定义为E b/N0)就等于1/(2σ2)。

第三步:仿真产生接收的随机变量r,它构成了“检测器”(即代表采样判决器)的输入。

由第一步和第二步可知,r=s+n。

第四步:“检测器”(即采样判决器)对输入的r进行判决,如果r>0.5,则输出为1,如果r<0.5,则输出为零。

第五步:计算误码率,方法是:将“检测器”的输出与“二进制数据源”的发送序列进行逐位比较,如果对应位的值不同,则差错计数器(表示比特差错计数)的值加一。

全部比较完后,计算误码率,计算公式为:P e=差错计数器值/发送序列的全部比特数N。

第六步:设置不同的SNR(即改变N0的值),重复以上的步骤,得到不同SNR下的误码率。

第七步:至少得到20个不同的SNR下的误码率后,绘制误码率与信噪比的关系曲线图,并在图上同时画出理论曲线图。

曲线图应该与下图类似(采用对数坐标系)。

2、第二个实验内容的实验方法①实验框图同第一个实验,只是“二进制数据源”的输出是±1。

②实验方法第一步:先产生一个等概率出现并且统计独立的二进制0和1的序列作为数据源。

方法是:用一个“均匀分布随机数产生器”产生在(0,1)范围均匀分布的随机数s,送到“二进制数据源”进行处理,如果输入的随机数在(0,0.5)以内,“二进制数据源”的输出就是-1;否则输入为1。

设产生的信号比特能量为E b。

第二步:仿真产生信道上的加性高斯噪声。

方法是:利用“高斯分布随机数产生器”分别产生一个均值为零,方差为σ2=E b N0/2的高斯分布随机数n,这个随机数将加在输入的二进制数据序列上。

为了方便,我们将信号比特能量归一化,即设E b=1。

这样一来,信噪比SNR(定义为E b/N0)就等于1/(2σ2)。

第三步:仿真产生接收的随机变量r,它构成了“检测器”(即代表采样判决器)的输入。

由第一步和第二步可知,r=s+n。

第四步:“检测器”(即采样判决器)对输入的r进行判决,如果r>0,则输出为1,如果r<0,则输出为-1。

第五步:计算误码率,方法是:将“检测器”的输出与“二进制数据源”的发送序列进行逐位比较,如果对应位的值不同,则差错计数器(表示比特差错计数)的值加一。

全部比较完后,计算误码率,计算公式为:P e=差错计数器值/发送序列的全部比特数N。

第六步:设置不同的SNR(即改变N0的值),重复以上的步骤,得到不同SNR下的误码率。

第七步:至少得到20个不同的SNR下的误码率后,绘制误码率与信噪比的关系曲线图,并在图上同时画出理论曲线图。

曲线图应该与下图类似(采用对数坐标系)。

五、Matlab源程序及仿真结果1、单极性信号:(1)代码如下k=20000; %k表示产生的随机数的个数E=1;%E表示比特能量,进行归一化,设为1for j=1:30 %产生30个不同的NN(j)=1/(10^(0.1*j)); %设定N的值d(j)=sqrt(E*N(j)/2); %标准差count=0;m=rand(1,k); %产生k个在(0,1)之间的均匀分布的随机数for i=1:kif (m(i)>0) && (m(i)< 0.5)s(i)=0;elses(i)=1;endend %根据产生的均匀随机数产生二进制数据源sn=random('Normal',0,d(j),1,k); %产生k个均值为0标准差为d(j)的高斯分布随机数n r=s+n; %r为检测器数据输入for i=1:kif r(i)>0.5t(i)=1;elset(i)=0;endend %对检测器输出的数据进行判决,输出tt;for i=1:kif s(i)~=t(i)count=count+1;endend %将检测器输出的数据t与数据源数据s比较,计算错误的比特个数p1(j)=count/k %计算误码率x(j)=10*log10(1/(2*d(j)^2)) % 将信噪比表示为对数形式,单位为dbp2(j)=0.5*erfc(1/(2*sqrt(2)*d(j))) %理论上计算单极性信号误码率的公式endsemilogy(x,p1,'*'); %绘制实验中测得的误码率与信噪比的曲线图hold onsemilogy(x,p2,'g'); %绘制理论值误码率与信噪比的曲线图axis([0 15,1e-6 1])legend('仿真数据','理论曲线')title('蒙特卡洛仿真单极性误码率波形');(2)仿真图形如下:2双极性信号:(1)代码如下k=20000 %k表示产生的随机数的个数E=1 %E表示比特能量,进行归一化,设为1for j=1:50 %产生30个不同的NN(j)=1/(10^(0.1*j)); %设定N的值d(j)=sqrt(E*N(j)/2); %标准差count=0m=rand(1,k); %产生k个在(0,1)之间的均匀分布的随机数for i=1:kif (m(i)>0) && (m(i)< 0.5)s(i)=-1;elses(i)=1;endends;n=random('Normal',0,d(j),1,k);%产生k个均值为0标差d(j)高斯分布的随机数r=s+n; % r为检测器数据输入for i=1:kif r(i)>0t(i)=1;elset(i)=-1;endend %对检测器输出的数据进行判决,输出tfor i=1:kif s(i)~=t(i)count=count+1;endend %将检测器输出的数据t与数据源数据s比较,计算错误的比特个数p1(j)=count/k; %计算误码率x(j)=10*log10(1/(2*d(j)^2)) % 将信噪比表示为对数形式,单位为dbp2(j)=0.5*erfc(1/(sqrt(2)*d(j))) %理论上计算单极性信号误码率的公式endsemilogy(x,p1,'*'); %绘制实验中测得的误码率与信噪比的曲线图hold onsemilogy(x,p2,'g'); %绘制理论上的误码率与信噪比的曲线图axis([0 10,1e-6 1])xlabel('信噪比/db')ylabel('误码率')legend('仿真数据','理论曲线')title('蒙特卡洛仿真双极性误码率波形');(2)仿真图形如下3、实验分析(1)由以上两个仿真图形,即单极性信号的误码率与信噪比的曲线图和双极性信号的误码率与信噪比的曲线图可知,实际测得的误码率与理论值比较接近。

相关主题