I would like to generate a code to produce a poisson process for N = 500 variates witk k is randomly between 1 and 10 and lambda = 12.
N = 500;
T = 1;
lambda = 12;
t = linspace(0, T, 100);
dt = t(2) - t(1);
S=cumsum([zeros(1,N); poissrnd(lambda*dt, length(t)-1, N) ]);
plot(t,S)
I generated this code by myself, bu I cannot use the random value of k between 1 and 10 , and 500-variates graph has too many lines, but I guess this result is totally wrong, how can I get rid of my mistakes and write the code properly?
Thanks a lot.
My second code is this
T = 1;
lambda = 12;
k=9;
t = linspace(0, T, 500);
for i = 1:500
f(i) = (lambda.^k) .* exp(-lambda) ./ factorial(k);
end
N = cumsum(f);
disp(N)
stairs(t,N(1:100))
But, again, the graph and estimations are totally wrong.

 Akzeptierte Antwort

Abdullah Gül
Abdullah Gül am 31 Mai 2020

1 Stimme

Hello Zeynep,
You may try this.
lambda = 12;
nPeriods = 500;
dt = 0.1; %time steps
T = nPeriods*dt;
t = 0:0.1:T;
rng('default')
k=randi([1,10],1,nPeriods);
f = (lambda.^k).*exp(-lambda)./factorial(k); % Poission Dist.
Nd = cumsum(f);
N = [ 0 Nd(1:end) ]; % N(0)=0.
stairs(t,N)
If you decrease the Nperiods, you could see the stairs more precisely.

3 Kommentare

Zeynep Toprak
Zeynep Toprak am 31 Mai 2020
hello Abdullah, thank you for helphing. I have a question, you know poisson process is different from the poisson distribution. Does this code is totally simulate poisson process by using this formula of f ?
Abdullah Gül
Abdullah Gül am 31 Mai 2020
The difference between them comes from randomness. I mean when you want to simulate a series of discrete events(e.g. Poisson dist.), its name becomes Poisson process. Here, the timing of events is random, but your model is still Poisson. Hence, you could use that code.
Zeynep Toprak
Zeynep Toprak am 31 Mai 2020
perfect! I'm confusing them most of time. I see now. Many thanks :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Sulaymon Eshkabilov
Sulaymon Eshkabilov am 14 Mai 2020

1 Stimme

Here is the alternative solution:
T = 1;
lambda = 12;
t = linspace(0, T, 500);
k=randi([1,10], 500);
f = (lambda.^k) .* exp(-lambda) ./ factorial(k);
N = sum(f);
disp(N);
stairs(t,N)
Good luck

2 Kommentare

Zeynep Toprak
Zeynep Toprak am 14 Mai 2020
Thank you very much for your help. Is this my second code is true to simulate poisson process? I thought it was trivial, but you confirm it right? and how can I do this the same thing by using poissrnd() ?
Zeynep Toprak
Zeynep Toprak am 14 Mai 2020
And also, it must be N(0) = 0 by the definition of poisson process (Poisson process defintion link), but here, it is not zero.

Melden Sie sich an, um zu kommentieren.

Sulaymon Eshkabilov
Sulaymon Eshkabilov am 14 Mai 2020

0 Stimmen

Why not to use MATLAB's built in fcn: poissrnd()

3 Kommentare

Hi Sulaymon Eshkabilov and Zeyneh Toprak,
I am also interested in this issue. My problem is to get the number of vehicles to an intersection with the Poisson distribution, lambda = 0.5 (vehicle/second). Can you help me code for vehicle traffic (numbers of vehicles) distributed by time period 500 seconds, step of time = 1 second?
Thanks so much!
Sa'adatu Abubakar
Sa'adatu Abubakar am 29 Jul. 2021
Hello I'm also interested in the area please can you help me with the MATLAB code for poison arrival and general servive with single server?. Thank you
Sa'adatu Abubakar
Sa'adatu Abubakar am 29 Jul. 2021
please I mean poisson arrival with general service and single server.

Melden Sie sich an, um zu kommentieren.

Najme Benvari
Najme Benvari am 23 Mai 2023

0 Stimmen

Hi I read the Poisson production code when the jump size is random and the intensity of the jumps is Stochastic and a CIR process. I will be very thankful.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by