How do I combine two different distributions in MATLAB?

Suppose I have X ~ Norm(x,y) and Y ~ Exponential(k)
I wish to create a new variable T = X + Y. How would this be done?
I need to be able to generate random numbers from the new variable T. Say I want to generate 1000 values how would I now do this?
Any help greatly appreciated.
Thanks.

 Respuesta aceptada

José-Luis
José-Luis el 21 de Sept. de 2012
Editada: José-Luis el 21 de Sept. de 2012
your_fun = @(average,var,k,numRows,numCols) average + var.*randn(numRows,numCols) + exprnd(k,numRows,numCols)
And to get values:
your_vals = your_fun(3,2,5,10,10)
will give you a 10 x 10 matrix of random values.

5 comentarios

Javier
Javier el 21 de Sept. de 2012
Hello José
Can you please prove the source of you answer (book, paper or link).
Im just curious
Thanks in advance
He's just defining a function which takes as its arguments, the parameters of the two distributions.
So for a normal distribution you have your "average" and "variance" and for an exponential distribution you have your lambda value which is "k" in this instance.
I'm just a little confused about why he did average + var.*randn(etc. etc.) though.
Daniel Shub
Daniel Shub el 21 de Sept. de 2012
@Javier where are you confused? Are you confused that mu + (sigma.^2).*randn generates a random numbers with a Gaussian distribution with mean mu and standard deviation sigma?
José-Luis
José-Luis el 21 de Sept. de 2012
Editada: José-Luis el 22 de Sept. de 2012
Well, I am sure there is an original paper defining the normal distribution, probably by Gauss, but any statistics book will give you the functions for both distributions. What James wanted was a random variable that is the sum of two other random variables. If you are talking about how the values are sampled, the default in Matlab is based on the Mersenne-Twister algorithm:
Matsumoto, M.; Nishimura, T. (1998). "Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator". ACM Transactions on Modeling and Computer Simulation 8 (1): 3–30. doi:10.1145/272991.272995
The rest is just a more or less forward application of the formula (M-T will give you a value that you translate into a quantile that you then use to get your random value, using the formula that defines it).
Daniel Shub
Daniel Shub el 21 de Sept. de 2012
@James, he could have done normrnd(mu,sigma,m,n), but it would be a hair slower because of the extra error checking.

Iniciar sesión para comentar.

Más respuestas (1)

James Newton
James Newton el 21 de Sept. de 2012
Thanks for the answer, it makes sense, forgot about making a function!

Preguntada:

el 21 de Sept. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by