二进制基带通信系统的蒙特卡洛仿真matlab实现
实验十五:MATLAB的蒙特卡洛仿真

实验十五: MATLAB 的蒙特卡洛仿真一、实验目的1. 了解蒙特卡洛仿真的基本概念。
2. 了解蒙特卡洛仿真的某些应用二.实验内容与步骤1. 蒙特卡洛(Monte Carlo )仿真的简介随机模拟方法,也称为Monte Carlo 方法,是一种基于“随机数”的计算方法。
这一方法源于美国在第一次世界大战进行的研制原子弹的“曼哈顿计划”。
该计划的主持人之一、数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo 来命名这种方法,为它蒙上了一层神秘色彩。
冯·诺伊曼是公理化方法和计算机体系的领袖人物,Monte Carlo 方法也是他的功劳。
事实上,Monte Carlo 方法的基本思想很早以前就被人们所发现和利用。
早在17世纪,人们就知道用事件发生的“频率”来决定事件的“概率”。
18世纪下半叶的法国学者Buffon 提出用投点试验的方法来确定圆周率π的值。
这个著名的Buffon 试验是Monte Carlo 方法的最早的尝试!历史上曾有几位学者相继做过这样的试验。
不过他们的试验是费时费力的,同时精度不够高,实施起来也很困难。
然而,随着计算机技术的飞速发展,人们不需要具体实施这些试验,而只要在计算机上进行大量的、快速的模拟试验就可以了。
Monte Carlo 方法是现代计算技术的最为杰出的成果之一,它在工程领域的作用是不可比拟的。
蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。
具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。
由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。
二进制基带通信系统的蒙特卡洛仿真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、蒙特卡洛仿真的基本原理由概率定义知,某事件的概率可以用大量试验中该事件发生的频率来估算,当样本容量足够大时,可以认为该事件的发生频率即为其概率。
蒙特卡罗方法详解与MATLAB实现

蒙特卡罗方法详解与MATLAB实现1.定义问题:首先需要明确问题的数学表达式或目标函数。
2.设计抽样方法:根据问题的特点,设计合适的抽样方法,通过生成随机数进行模拟。
3.数据生成:根据设定的抽样方法,生成一组模拟数据。
4.计算统计量:根据数据计算求解问题所需要的统计量,如均值、方差、概率等。
5.统计推断:通过统计量的计算结果,进行推断和分析,得出对问题的解答或估计。
1.定义问题函数:首先需要用MATLAB编写问题的数学表达式或目标函数。
例如,如果要判断一个点是否在一些区域内,可以定义一个函数来判断该点的坐标是否满足区域的条件。
2. 设计抽样方法:根据问题的特点,设计合适的抽样方法,通过生成随机数进行模拟。
在MATLAB中可以使用rand(或randn(等函数生成随机数。
3.数据生成:根据设定的抽样方法,生成一组模拟数据。
可以使用循环来生成多组随机数,以模拟多次试验的结果。
4. 计算统计量:根据生成的模拟数据,计算求解问题所需要的统计量。
根据具体的问题,可以使用MATLAB内置的统计函数,如mean(、var(等。
5. 统计推断:根据统计量的计算结果,进行推断和分析,得出对问题的解答或估计。
可以使用if语句或逻辑判断来判断判断是否满足条件,得到对问题的解答。
以求解圆的面积为例,详细说明蒙特卡罗方法在MATLAB中的实现:1. 定义问题函数:定义一个函数isInsideCircle(x, y)来判断点(x, y)是否在单位圆内:function inside = isInsideCircle(x, y)if x^2 + y^2 <= 1inside = true;elseinside = false;endend2. 设计抽样方法:通过rand(函数在区间[-1, 1]上生成一组随机数,表示点的横纵坐标。
x = 2 * rand(n, 1) - 1;y = 2 * rand(n, 1) - 1;4.计算统计量:根据生成的模拟数据,计算圆的面积的统计量。
qpsk、bpsk蒙特卡洛仿真matlab代码

qpsk、bpsk的蒙特卡洛仿真是一种用于测试和验证通信系统性能的重要工具。
通过模拟大量的随机输入数据,并对系统进行多次仿真运算,可以对系统的性能进行全面评估,包括误码率、信噪比要求等。
在matlab中,我们可以通过编写相应的仿真代码来实现qpsk、bpsk 的蒙特卡洛仿真。
下面将分别介绍qpsk和bpsk的蒙特卡洛仿真matlab代码。
一、qpsk的蒙特卡洛仿真matlab代码1. 生成随机的qpsk调制信号我们需要生成一组随机的qpsk调制信号,可以使用randi函数生成随机整数序列,然后将其映射到qpsk符号点上。
2. 添加高斯白噪声在信号传输过程中,会受到各种干扰,其中最主要的干扰之一就是高斯白噪声。
我们可以使用randn函数生成高斯白噪声序列,然后与调制信号相加,模拟信号在传输过程中受到的噪声干扰。
3. 解调和判决接收端需要进行解调和判决操作,将接收到的信号重新映射到qpsk符号点上,并判断接收到的符号与发送的符号是否一致,从而判断是否发生误码。
4. 统计误码率通过多次仿真运算,记录错误判决的次数,从而可以计算出系统的误码率。
二、bpsk的蒙特卡洛仿真matlab代码1. 生成随机的bpsk调制信号与qpsk相似,我们需要先生成一组随机的bpsk调制信号,然后模拟信号传输过程中的噪声干扰。
2. 添加高斯白噪声同样使用randn函数生成高斯白噪声序列,与bpsk调制信号相加。
3. 解调和判决接收端对接收到的信号进行解调和判决,判断接收到的符号是否与发送的符号一致。
4. 统计误码率通过多次仿真运算,记录错误判决的次数,计算系统的误码率。
需要注意的是,在编写matlab代码时,要考虑到信号的长度、仿真次数、信噪比的范围等参数的选择,以及仿真结果的统计分析和可视化呈现。
qpsk、bpsk的蒙特卡洛仿真matlab代码可以通过以上步骤实现。
通过对系统性能进行全面评估,可以帮助工程师优化通信系统设计,提高系统的可靠性和稳定性。
基于Matlab的二进制数字传输通信系统的蒙特卡罗仿真

基于Matlab的二进制数字传输通信系统的蒙特卡罗仿真作者:鲁芳旭刘翠海来源:《数字技术与应用》2020年第09期摘要:本文基于Matlab平台,对二进制数字传输通信系统的各部分,即“信号产生、信号干扰、接收端的信号检测与估计进行”进行数学建模和仿真,同时利用蒙特卡罗估计以研究该系统的误比特率(BER)问题。
虽然二进制数字传输通信系统结构比较简单,但非常具有代表性,对进一步研究复杂数字通信系统的BER问题具有一定意义。
关键词:Matlab;二进制数字传输系统;误比特率;蒙特卡罗仿真中图分类号:TN914.3 文献标识码:A 文章编号:1007-9416(2020)09-0026-030 引言随着通信技术的发展,现代通信系统的结构也越来越复杂,对其进行完整仿真是很困难的,可以通过简化问题的手段降低系统的复杂度,将系统以模块化的形式来表示,根据各个模块建立对应的数学模型[1]。
二进制数字传输系统结构比较简单却非常具有代表性,因此,本文以二进制数字传输系统为研究对象,首先对二进制数字传输系统进行模块划分,并进行建模,其次利用Matlab平台对各模块进行仿真实现,由于BER是通信系统性能估计的主要性能指标[2],所以在仿真建模基础上,对该系统编程实现了蒙特卡罗仿真,并对该系统性能进行了分析。
1 原理分析1.1 信源输出端假设信源输出端输出的是等概率且相互独立的二进制0、1符号序列s[n],信源输出的符号能量为Eb。
1.2 加性高斯白噪声信道加性高斯白噪声是通信系统仿真最常采用的一种噪声,它是真实世界噪声过程的物理抽象[2]。
由于噪声的表现是一种随机过程,因此可以用均值和方差来表示其特性。
加性高斯白噪声是零均值的平稳高斯随机过程,其功率谱密度在极宽的频率范围内平坦,类似白光的谱密度,同时在大范围的频率上均匀分布。
在本文中,假设两个高斯噪声发生器产生的加性噪声分量分别为n0和n1。
1.3 接收端检测器规定一个判决准则,来模拟信号受噪声干扰而产生误码的过程,利用接收端的检测器对接收的信号进进行判决并输出结果,随后与发送的数据进行比较,即可完成对误码数据的差错计数,通过计算即可求得该系统的BER。
蒙特卡洛仿真matlab代码

蒙特卡洛仿真matlab代码
蒙特卡洛仿真是一种基于随机化的数值分析方法,适用于处理那些无法用解析法求解的复杂问题。
在实际应用中,它被广泛应用于金融、工程、统计学等领域,以生成随机样本来估计不确定因素对系统行为的影响。
Matlab是一种强大的数学软件,可以用于实现蒙特卡洛仿真。
在Matlab中,我们可以使用rand函数来生成随机数,然后结合循环和条件语句来模拟实际场景。
例如,我们可以使用蒙特卡洛方法来估算一个投掷硬币的概率。
具体地,在Matlab中,我们可以使用以下代码来实现一个投掷硬币的蒙特卡洛仿真:
```matlab
N = 10000; % 模拟次数
cnt = 0; % 正面次数统计
for i = 1:N
r = rand; % 生成随机数
if r < 0.5
cnt = cnt + 1;
end
end
p = cnt/N; % 估计概率
fprintf('正面概率的估计值为:%f\n', p);
```
在上述代码中,我们首先定义了模拟次数N和正面次数统计cnt,然后使用for循环生成N个随机数,如果随机数小于0.5,则认为这是一次正面,将cnt加1。
最后,通过cnt和N计算出正面的概率p。
运行上述代码,我们可以得到一个正面概率的估计值。
总之,蒙特卡洛仿真是一种有用的数值分析方法,能够对复杂问
题进行可靠的估计和仿真。
在Matlab中,我们可以轻松实现蒙特卡洛仿真来解决各种实际问题。
matlab蒙特卡洛模拟代码

标题:解密matlab蒙特卡洛模拟代码在工程科学和金融领域,蒙特卡洛模拟一直是一种强大的工具,用于估计复杂系统的性能、风险和价值。
而在matlab中,通过编写蒙特卡洛模拟代码,我们可以更好地理解和应用这一方法。
本文将从简入深地探讨matlab蒙特卡洛模拟代码的编写和应用,帮助大家更好地掌握这一强大的工具。
一、什么是蒙特卡洛模拟蒙特卡洛方法最早是由科学家利用赌场赌博游戏中的随机性来模拟物理试验,后来被引入到金融和工程科学中。
在matlab中,蒙特卡洛模拟就是利用随机数生成器来模拟系统的随机变量,通过重复随机抽样来估计系统的性能指标。
在matlab中,我们可以使用rand和randn 等函数来生成均匀分布和正态分布的随机数,进而进行蒙特卡洛模拟。
二、编写matlab蒙特卡洛模拟代码我们需要定义模拟的随机变量和模拟的次数。
在matlab中,我们可以使用for循环来进行多次模拟,然后将每次模拟的结果保存下来。
我们可以根据模拟结果计算系统的性能指标,比如均值、标准差、置信区间等。
我们可以将模拟结果可视化,比如通过绘制直方图、散点图或累计分布函数图来展示模拟结果的分布特征。
三、应用举例:股票价格模拟以股票价格的模拟为例,我们可以先定义股票价格的几何布朗运动模型,然后在matlab中编写蒙特卡洛模拟代码来模拟未来股票价格的变化。
在模拟过程中,我们可以设置股票价格的随机波动率、股票价格的初始值和随机变动的步长等参数,进而模拟股票价格在未来一段时间内的走势。
通过蒙特卡洛模拟,我们可以得到股票价格在不同情景下的可能走势,进而评估投资的风险和回报。
回顾总结本文从简入深地探讨了matlab蒙特卡洛模拟代码的编写和应用,希望对读者能有所启发。
通过学习和掌握matlab蒙特卡洛模拟,我们可以更好地理解和应用蒙特卡洛方法,进而在工程科学和金融领域中更好地解决实际问题。
个人观点和理解对于matlab蒙特卡洛模拟,我认为重点在于理解随机变量的模拟和系统性能指标的计算。
基于蒙特卡罗仿真的通信系统性能分析

基于蒙特卡罗仿真的通信系统性能分析【摘要】蒙特卡罗计算机仿真用于估算数字通信系统的差错率是一个很有效的手段,特别适用于难以对检测器的性能进行分析的情况。
文章分析了蒙特卡洛仿真方法的概念及原理,建立在加性噪声干扰下相关检测系统的蒙特卡罗仿真模型。
模型通过matlab软件方法实现,仿真结果与对应系统的理论误码率基本符合。
【关键词】蒙特卡罗仿真信噪比误码率【中图分类号】tn911 【文献标识码】a 【文章编号】1006-9682(2012)10-0084-02蒙特卡罗(monte carlo)方法是一种基于随机试验和统计计算的数值方法,其基本原理是当需要求解的问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,可以通过一种“实验”的方法,用这种事件出现的频率来估计该随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。
如果需要求解的问题不是一个随机事件问题,还可以通过数学分析找出与之等价的随机事件模型,然后再利用蒙特卡罗方法去求解。
[1] 误码率是评价一个通信系统性能优劣的重要指标,但由于误码率的计算公式复杂,甚至在很多情况下无法得到解析解。
[2~3]因此通过蒙特卡罗方法模拟实际的通信过程,得到仿真的通信系统误码率就成为一种方便的手段,特别适用于难以对检测器的性能进行分析的情况。
一、多种二进制基带信号的传输与接收1.正交信号的传输与接收在数字通信系统中,0和1组成的二进制数据可以用两个正交波形s0(t)和s1(t)来传输,传输信号通过加性高斯白噪声信道(awgn)后叠加了功率谱密度为(w/hz)的噪声n(t)。
接收端的信号可表示为:r(t)=si(t)+n(t),i=0,1;0≤t≤tb (1)接收端在接收到信号r(t)后,判断在区间0≤t≤tb内发送是0还是1。
接收机的设计原则是使差错率最小,满足这个原则的接收机称为最佳接收机。
awgn信道的最佳接收机可以由信号相关器和检测器组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一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)由以上两个仿真图形,即单极性信号的误码率与信噪比的曲线图和双极性信号的误码率与信噪比的曲线图可知,实际测得的误码率与理论值比较接近。