Generate random samples from arbitrary discrete probability density function in Matlab

11 Ansichten (letzte 30 Tage)
I've got an arbitrary probability density function discretized as a matrix in Matlab, that means that for every pair x,y the probability is stored in the matrix: A(x,y) = probability
This is a 100x100 matrix, and I would like to be able to generate random samples of two dimensions (x,y) out of this matrix and also, if possible, to be able to calculate the mean and other moments of the PDF. I want to do this because after resampling, I want to fit the samples to an approximated Gaussian Mixture Model.
I've been looking everywhere but I haven't found anything as specific as this. I hope you may be able to help me.
Thank you.

Akzeptierte Antwort

Miguel Encinas
Miguel Encinas am 28 Jul. 2015
Thank you all for your ideas.
In the end, the closest to the solution I was looking for was found by a user in this site. All credit to him: http://stackoverflow.com/questions/31665504/generate-random-samples-from-arbitrary-discrete-probability-density-function-in/

Weitere Antworten (2)

Walter Roberson
Walter Roberson am 28 Jul. 2015
Bearbeitet: Walter Roberson am 28 Jul. 2015
nA = numel(A);
numsamples = 20;
samples = A(randi(nA,[numsamples,1]));
This assumes you want to uniformly sample from the matrix. If you do not, then you will need to specify your sampling method.
  1 Kommentar
Miguel Encinas
Miguel Encinas am 28 Jul. 2015
Bearbeitet: Miguel Encinas am 28 Jul. 2015
First of all thank you for your answer.
The solution you gave me takes samples from the values stored in the matrix, but maybe I didn't explain well what I want.
The matrix A that I have represents a discrete probability density function (as I understand it), that means that for each pair of values (x,y) which are the indices of the matrix a probability is stored in the matrix in the following way: A(x,y) = probability
What I want to do are two things:
1) Take samples according to the probability stored in the matrix, so that this samples follow this custom discretized distribution. That means that my samples have to be of two dimensions [x y] and need to be produced according to the probability stored in the matrix.
2) Calculate the mean and covariance by approximating the samples taken before to a Gaussian Mixture Model (I think I know how to do this once I have the samples).
Thank you.

Melden Sie sich an, um zu kommentieren.


Torsten
Torsten am 28 Jul. 2015
Take a look at the second example under
Best wishes
Torsten.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by