1,273 views (last 30 days)

Show older comments

John D'Errico
on 11 Jul 2014

As all the people have pointed out, there are questions that you must answer before you really get a valid response.

Is the mean to be zero and the variance 1 AFTER truncation or before?

Star Strider
on 11 Jul 2014

The core MATLAB function randn will produce normally-distributed random numbers with zero mean and unity standard deviation.

If you want the numbers to be limited to those <=1, this will work:

q = randn(1,10);

q = q(q<=1);

Star Strider
on 11 Jul 2014

For that matter, considering that the Gaussian distribution has infinite support, once truncated, it is no longer Gaussian.

The mean and variance shift can be ‘fixed’ relatively easily though:

q = q/std(q) - mean(q);

It’s still non-Gaussian, but the numbers work.

Ben11
on 11 Jul 2014

What if you generate some random numbers (here 100) with normal distribution, mean of 0 and std dev of 1:

R = normrnd(0,1,1,100);

then divide all by the highest value so that the maximum is 1:

R_norm = R./max(R(:));

Check max:

max(R_norm(:))

ans =

1

Chris E.
on 11 Jul 2014

Edited: Chris E.
on 11 Jul 2014

Well a simple Gaussian distribution code can be as follows:

function main()

xo = 0;

yo = 0;

xsigma = 0.01;

ysigma = 0.01;

particle_amount = 100;

xpoints = Gauss(xo,xsigma,particle_amount)

ypoints = Gauss(yo,ysigma,particle_amount)

%needs column vectors

coordinates_x_y = [xpoints ypoints];

function output = Gauss(xo,sigma,PA)

r = sqrt(-2.0.*(sigma^2).*log(rand(PA,1)));

phi = 2.0.*pi.*rand(PA,1);

output = xo+r.*cos(phi);

This produces as many random Gaussian distribution about the center of (x,y)=(0,0) and a sigma of 0.01 with 100 points of data. You can modify where needed. I hope that helps you out!

Ruben Dörfel
on 13 Oct 2020

@Jon Thornburg

Gauss seems to be a user defined function. You would have to put

function output = Gauss(xo,sigma,PA)

r = sqrt(-2.0.*(sigma^2).*log(rand(PA,1)));

phi = 2.0.*pi.*rand(PA,1);

output = xo+r.*cos(phi);

into a new script. You should look up how to implement functions in matlab.

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

Start Hunting!