Sample from multivariate exponential distribution

5 visualizaciones (últimos 30 días)
LM72
LM72 el 3 de Feb. de 2017
Comentada: the cyclist el 23 de Abr. de 2021
I'd like to generate random vectors according to a multivariate exponential distribution, that is with a pdf f: R^n->R given by
for appropriate normalisation constant c_e. I wondered if there was built in functionality to do this, if not how would I go about doing this manually?

Respuestas (1)

Roger Stafford
Roger Stafford el 4 de Feb. de 2017
You can make use of the ‘gammaincinv’ function for this problem:
X = randn(m,n);
X = X.*repmat(gammaincinv(rand(m,1),n)./sqrt(sum(X.^2,2)),1,n);
The resulting array X has m rows, each consisting of n coordinates in R^n space with the requested distribution.
(I’m assuming here that ‘gammaincinv’ will accept the scalar n for its second argument. If not, the n will have to be repeated m times using ‘repmat’. I have also assumed that the n coordinate variables are to be statistically independent.)
  3 comentarios
ayoub bouayaben
ayoub bouayaben el 22 de Abr. de 2021
@Roger Stafford hello, can you explain me please how can i modify the code that you mentioned before if i want to sample a vector of N elements from a gaussian distribution which is given by :
p(y) = exp(-1/2 *(y - a).' * C* ( y - a) ) with C is the cov matrix with y in R^n
Thank you for your help !
the cyclist
the cyclist el 23 de Abr. de 2021
Can you use just use the mvnrnd function for that?

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by