Random uniform data points

8 views (last 30 days)
Simon De Gheselle on 19 Mar 2020
Answered: Moreno, M. on 20 Mar 2022
I am evaluating a positioning technique in a 3D environment (5m x 5m x 3m), is it possible to generate random unform distributed 3D coordiantes?
I am currently using the following code snippet:
a = -(width_dimension/2);
b = width_dimension/2;
rand_x = width_dimension.*rand(number_of_test_samples,1) + a;
a = -(length_dimension/2);
b = length_dimension/2;
rand_y = length_dimension.*rand(number_of_test_samples,1) + a;
a = 0;
b = height_dimension;
rand_z = height_dimension.*rand(number_of_test_samples,1) + a;
Adam Danz on 19 Mar 2020
Edited: Adam Danz on 19 Mar 2020
rand() returns random numbers from a uniform distribution bounded by [0,1].
Are you asking how to return a 3D array of random numbers?
d = rand(10,5,4); % returns 10x5x4 array of randos

Ameer Hamza on 19 Mar 2020
Edited: Ameer Hamza on 19 Mar 2020
You can generate the coordinates with a single call to rand()
width_dimension = 5;
length_dimension = 5;
height_dimension = 3;
number_of_test_samples = 1000;
rand_values = rand(number_of_test_samples, 3) - 0.5;
rand_values = rand_values.*[width_dimension length_dimension height_dimension];
First colums is x-coordinate. Second and third columns are y and z-coordinates respectively.

Moreno, M. on 20 Mar 2022
https://uk.mathworks.com/matlabcentral/fileexchange/108374-uniformly-distributed-points