Случайный шум Пуассона

#wolfram-mathematica #poisson

#wolfram-mathematica #poisson

Вопрос:

Я ищу эквивалент приведенной ниже функции Matlab в Mathematica:

«R = poissrnd(lambda) генерирует случайные числа из распределения Пуассона со средним параметром lambda. лямбда может быть вектором, матрицей или многомерным массивом. Размер R равен размеру лямбда. «

Пример вывода функции приведен ниже.

 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?

Ответ №1:

Распределение Пуассона определено только для целых чисел. Итак, вам нужно будет использовать RandomInteger с PoissonDistribution следующим образом:

 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}
  

Ответ №2:

Прочитав обширную онлайн-документацию 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[#]] amp;, lambda]

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