Sample from multivariate exponential distribution

5 visualizzazioni (ultimi 30 giorni)
LM72
LM72 il 3 Feb 2017
Commentato: the cyclist il 23 Apr 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?

Risposte (1)

Roger Stafford
Roger Stafford il 4 Feb 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 Commenti
ayoub bouayaben
ayoub bouayaben il 22 Apr 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 il 23 Apr 2021
Can you use just use the mvnrnd function for that?

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by