Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 要使模拟成为';蒙特卡罗模拟';用于BER计算?_Matlab_Simulation_Montecarlo - Fatal编程技术网

Matlab 要使模拟成为';蒙特卡罗模拟';用于BER计算?

Matlab 要使模拟成为';蒙特卡罗模拟';用于BER计算?,matlab,simulation,montecarlo,Matlab,Simulation,Montecarlo,编辑的问题 要使模拟成为误码率计算的准确“蒙特卡罗模拟”,您应该进行多少次迭代 最小值是多少?如果我想以指数增长的数字重复模拟五次?我应该从1e2开始,因此>>迭代=[1e2 1e3 1e4 1e5 1e6]还是1e3>>[1e3 1e4 1e5 1e6 1e7]?还是别的什么?通常的做法是什么 其他信息: 我以前使用过[8E31E4 3e4 5e4 8e4 1e5],但教授认为这还不够,因为结果并不令人满意 模拟在我的计算机上花费了很长时间,因此我无法根据结果不断更改迭代。如果这方面有共同的做

编辑的问题

要使模拟成为误码率计算的准确“蒙特卡罗模拟”,您应该进行多少次迭代

最小值是多少?如果我想以指数增长的数字重复模拟五次?我应该从1e2开始,因此>>迭代=[1e2 1e3 1e4 1e5 1e6]还是1e3>>[1e3 1e4 1e5 1e6 1e7]?还是别的什么?通常的做法是什么

其他信息: 我以前使用过[8E31E4 3e4 5e4 8e4 1e5],但教授认为这还不够,因为结果并不令人满意

模拟在我的计算机上花费了很长时间,因此我无法根据结果不断更改迭代。如果这方面有共同的做法,请让我知道


谢谢@BillBokeey帮我编辑这个问题。

你教授的建议让我觉得是定性的,而不是定量的方法来估计你模拟的收敛性

坦率地说,我不知道误码率是如何计算的,但我处理了很多MC的积分计算

在这种情况下,你在某个区间上采样席 fMC=Si-fi/N,其中

S
表示总和。我们知道fMC将收敛到真值,方差为sigma2/N(或标准偏差为sigma/sqrt(N))。然后我们做什么,我们在相同的模拟估算中计算
sigma
,假设足够大的
N
sigma
的良好近似值,并绘制模拟误差图。在实际应用中,与fMC一起,我们计算第二动量和平均值为f2MC=Si f2i/N,最后得到s=sqrt(f2MC-(fMC)2)/sqrt(N)作为MC模拟的估计误差(尽管有点偏差)

因此,您可以在相同的图形上绘制BER值和模拟的统计误差。您甚至可以做得更好—要求用户输入所需的统计误差(例如,以%,表示用户输入s/f*100),然后继续成串模拟,直到达到所需的精度


然后,您可以判断109个点是否足够……

假设我们将模拟BER表示为Pb_hat,Pb_hat表示为[(1-α)Pb,(1+α)Pb],其中Pb是真实BER,alpha是偏差公差百分比(例如,0.1),然后从[van Trees 2013,第83页]我们知道,用置信概率pc获得Pb_hat所需的蒙特卡罗试验次数为K=(c/alpha)^2 x(1-Pb)/Pb, 表I中给出了c

表一:高斯分布的置信区间概率

个人计算机 0.900 0.950 0.954 0.990 0.997 C 1.645 1.960 2 2.576 3
嗯,这是一个尴尬的问题。蒙特卡罗模拟是一个随机过程,因此任何一个介于1和无穷大之间的数字都符合定义。一个更好的问题应该包括单词
收敛
(并发布在网站上)我的教授告诉我增加迭代次数,因为这是一个“蒙特卡罗”模拟。。。所以我假设蒙特卡罗模拟的迭代次数最少@当迭代次数趋于无穷大时,BillBokeeyA Monte Carlo算法收敛(意味着结果更接近解)。因此,增加迭代次数可以使您离解决方案更近。如果您知道模拟的预期结果(例如,您试图用蒙特卡罗方法近似pi的值),您可以定义一个公差,当您离pi的距离比每次编辑定义的公差更近时,停止算法,我认为你的教授想让你做的是对指数增长的迭代次数进行模拟,并绘制结果与迭代次数的对比图,以表明该算法确实会converge@BillBokeey是的,那样的话,就足够做1e2然后1e3然后1e4了吗?还是从1e3开始?通常的做法是什么?正态近似值不适用于您指定的公差限值,因为10^-4-1.96*0.01很容易陷入负(不可行)区域。