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

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!

2 commentaires

See this: (mean zero and variance 1)
A=randn(1000,2);
x=A(:,1);
y=A(:,2);
plot(x,y,'Marker','.','LineStyle','none')
var(x)+1i*var(y)
mean(x)+1i*mean(y)
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!

Connectez-vous pour commenter.

Réponses (3)

With adding a number in x and y directions you can change their position, and the number multiplied changes their radius:
A=randn(3000,2);
x=A(:,1)';
y=A(:,2)';
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];
plot(x,y,'Marker','.','LineStyle','none')
axis('equal')
var(x)+1i*var(y)
mean(x)+1i*mean(y)

1 commentaire

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?

Connectez-vous pour commenter.

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
Hi: Sorry I have to read some articles to investigate this problem and it took long time, I got http://www.astro.rug.nl/~weygaert/tim1publication/lss2007/computerIII.pdf 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) "

Catégories

En savoir plus sur Fourier Analysis and Filtering dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by