【发布时间】:2010-09-24 02:34:46
【问题描述】:
我正在用 MATLAB 重写蒙特卡罗仿真模型,重点是可读性。该模型涉及许多粒子,表示为 (x,y,z),在具有一定终止概率的一小组状态上随机游走。与输出相关的信息是终止于给定状态的粒子数。
模拟需要足够多的粒子,因此单独为每个粒子运行它的成本太高了。向量化似乎是从 MATLAB 中获得性能的方法,但是有没有什么惯用的方法可以在 MATLAB 中创建这个仿真的向量化版本?
我正在努力实现这一点 - 我什至尝试创建一个 (nStates x nParticles) 矩阵来表示每个粒子状态组合,但是这种方法在可读性方面很快就失控了,因为粒子相互独立地从一个州跳到另一个州。我应该硬着头皮改用更适合这个的语言吗?
【问题讨论】:
-
当您对问题的性质提供这么少的细节时,很难做出有用的 cmets。
-
抱歉,为了清楚起见,我试图将其抽象化。我正在模拟通过有机材料层的光传输。每个粒子(光子)撞击材料并可以反射或折射。这是通过与材料特性和入射角成比例的某种概率确定的。粒子可以在层内“反弹”。我想知道整体反映了多少,通过了多少。我通过拍摄许多粒子并追踪它们的路径来做到这一点。问题是,如何将这些路径作为矢量化代码而不是每个粒子的 while 循环来跟踪。
标签: matlab simulation vectorization montecarlo markov-chains