Generate samples from a normal distribution
Mostrar comentarios más antiguos
Hello,
I have a Gaussian mixture distribution which looks as attached. I now want to sample and generate 1000 samples from this and plot their histogram. I tried using randi function but it does not work. Please let me know how to do this.
y = randi(my_pdf,100); %%my_pdf is my distribution
Thanks!
5 comentarios
Walter Roberson
el 25 de Nov. de 2016
Is that a continuous function or a discrete function?
Torsten
el 25 de Nov. de 2016
Could you explain the graphic in gmm.jpg ?
It's not a distribution generated with normpdf, not even a distribution ...
So what is it ?
Best wishes
Torsten.
Image Analyst
el 25 de Nov. de 2016
Please supply the hw function so we can run your code.
Respuestas (3)
Image Analyst
el 25 de Nov. de 2016
1 voto
If you have that function already, then use inverse transform sampling: https://en.wikipedia.org/wiki/Inverse_transform_sampling. In short, compute the CDF of your function and use rand() to pick a value.
I attach an example of how I used it for the Rayleigh distribution.
CarrotCakeIsYum
el 25 de Nov. de 2016
randi will generate rando integers.
To generate a random sample from a vector, use randsample. see:
help randsample
I'd imagine you'd want:
y = randsample(my_pdf,100);
To plot a histogram use the 'hist' command.
2 comentarios
Kash022
el 25 de Nov. de 2016
CarrotCakeIsYum
el 25 de Nov. de 2016
Sorry I don't follow... your population will only have one mean!
For the JPEG you've posted, the mean will be at 7.5 (since it is a symmetrical distribution).
Image Analyst
el 25 de Nov. de 2016
0 votos
Maybe use randn() to get a list of a few million numbers taken from those 13 distributions (call randn thirteen times), then pick one of the values at random.
Categorías
Más información sobre Normal Distribution en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!