2011-10-12 160 views
2

我尋找以下MATLAB函數在數學等價的:隨機泊松噪聲

「R = poissrnd(拉姆達)從與平均參數的λ的泊松分佈產生隨機數的λ可以是一個矢量。矩陣或多維數組,R的大小是lambda的大小。「

下面的函數輸出示例。

b = 95.7165 95.7165 95.7165 95.7165 95.7165 98.9772 98.9772 98.9772 98.9772 0.3876 

poissrnd(b) 

ans =100 115  81 90 109 106 104 87 104  2 

我怎麼能在Mathematica 8中做類似的事情?

回答

8

Poisson distribution僅用於整數。所以你需要使用RandomIntegerPoissonDistribution像這樣:

poissrnd[lambda_]:=RandomInteger[PoissonDistribution[lambda]] 

用法:

b = {95.7165, 95.7165, 95.7165, 95.7165, 95.7165, 98.9772, 98.9772, 
    98.9772, 98.9772, 0.3876}; 

poissrnd /@ b 

Out[1] = {104, 97, 67, 84, 96, 123, 93, 96, 100, 0} 
4

通過閱讀大量的在線Mathematica文檔,特別是關於PoissonDistribution及其繪圖示例,它指向PDF。這將允許您計算分配值。

請注意,根據我個人的經驗,對於簡單的發行版,只需插入發行版的公式並使用它即可,而不是花哨的PDF方法。泊松分佈不是太複雜。

3

或者,你可以使用

In[2]:= lambda = {1.0, 2.05, 11.04} 

Out[2]= {1., 2.05, 11.04} 

In[3]:= Map[RandomVariate[PoissonDistribution[#]] &, lambda] 

Out[3]= {0, 3, 11}