MATLAB Answers


how to produce a 2-D point distribution with normal density distribution

Asked by adameye adameye on 30 Apr 2013
Latest activity Commented on by Random user on 28 Mar 2017

Hi: I am trying to simulate a galaxy distribution, in which all units are identical, but the local densities are different. Simply speaking, I need to produce a 2-D point distribution, say, 1000 identical points in a 10*10 square, then if I measure the local densities (for example, within a circle with radius=1), I could get a normal distribution of densities.

   Maybe I did not explain it clearly, but just do not know how to do it, I can easily generate a data set with normal distribution value, but how to apply normal distribution on the position of 2-D points (move some together and take some apart) to get normal density distribution? thanks! 


See this: (mean zero and variance 1)


thanks, this is very interesting, but this data looks like one "big ball", right? If I want to have a full pic of data, with points cluster somewhere, voids somewhere, how can I do it? Maybe I can combine some of those results to get a pic with a bunch of "big balls"? thanks again!

Log in to comment.


No products are associated with this question.

3 Answers

Answer by Iman Ansari on 1 May 2013

With adding a number in x and y directions you can change their position, and the number multiplied changes their radius:

x=[x(1:800)+3 1/2.*x(801:1800)-3 1.5.*x(1801:3000)+2];
y=[y(1:800)+4 1/2.*y(801:1800)   1.5.*y(1801:3000)-3];

  1 Comment

Could you explain the code please? For example, if I want to make it more efficient, how would this be done in a loop? For example,

x=[x(1:800)+i-iterator 1/2.*x(801:1800)+i-iterator 1.5.*x(1801:3000)+i-iterator.....];
y=[y(1:800)+constant 1/2.*y(801:1800)+constant   1.5.*y(1801:3000)+constant.....];

If I wanted to use a loop, or any other vectorization method, how would this be done?

Log in to comment.

Answer by adameye adameye on 1 May 2013

Thanks a lot, This is a different way to solve the problem.

btw, do you know how to produce the needed distribution from power spectrum? because in cosmos people normaly make gaussian simulation a kind of stationary distributing (Cov(x,y)==Cov(x+u,y+u), only related with the distance between x and y, not relation with the shift u), in other words, the distribution will look like no obvious center....

thanks again

  1 Comment

Log in to comment.

Answer by adameye adameye on 14 May 2013

Hi: Sorry I have to read some articles to investigate this problem and it took long time, I got I am still trying to understand the right procedure.... thank you very much! "

4 Generating Gaussian eld in Fourier Space Generating a Random Gaussian eld is easiliest done in Fourier space. Then the complex Fourier amplitudes are Y~ = Y~ exp(i*phi). Where  is a random phase and the modules are Rayleigh distributed

f(x) =2x/(sigma^2)*exp(-x^2/sigma^2)

The dispersion is of course related to the Power Spectrum as

sigma^2=(delat_k^3)*P(k) "


Log in to comment.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!