在MATLAB中定义自己的概率密度函数

时间:2012-03-09 16:38:44

标签: matlab octave

是否可以在MATLAB或Octave中定义自己的概率密度函数并使用它 用于生成随机数?

MATLAB和Octave有默认函数,比如rand,randn内置从统一或正态分布中随机绘制点,但似乎没有关于如何定义我自己的proability密度函数的文档。

3 个答案:

答案 0 :(得分:8)

从任意随机分布中抽样并不总是微不足道的。对于众所周知的发行版,有一些技巧可以实现它们,其中大部分都是在统计工具箱中实现的,如Oli所说。

如果您感兴趣的分布形式困难,那么有许多可能对您有帮助的采样算法,例如,rejection sampling,切片采样,Metropolis–Hastings algorithm

如果您的分布是离散的,或者可以通过离散分布很好地近似,那么您可以使用randsamp进行多项式采样。

答案 1 :(得分:1)

如果您拥有统计工具箱,则可以使用random(),因为它内置了大量有用的PDF。

答案 2 :(得分:1)

我最近不得不这样做几次,这并不是一件容易的事。我最喜欢的技巧是使用Inverse transform sampling

这个想法非常简单:

  1. 创建一个cdf
  2. 使用统一的随机数生成器。
  3. 识别映射到您的cdf值的RV。