Sample from multivariate exponential distribution

조회 수: 5 (최근 30일)
LM72
LM72 2017년 2월 3일
댓글: the cyclist 2021년 4월 23일
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?
  댓글 수: 1
the cyclist
the cyclist 2017년 2월 3일
Are the x variables independent, or correlated?

댓글을 달려면 로그인하십시오.

답변 (1개)

Roger Stafford
Roger Stafford 2017년 2월 4일
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
ayoub bouayaben
ayoub bouayaben 2021년 4월 22일
@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 2021년 4월 23일
Can you use just use the mvnrnd function for that?

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by