Есть ли способ ограничить случайное в Matlab? - PullRequest
0 голосов
/ 16 ноября 2011

Допустим, я хочу сгенерировать набор координат (x, y), используя rand.Возьмите любую точку сгенерированного случайного набора, расстояние между этой точкой и эти точки (ближайший / первый слой) окружают ее может быть ограничено в определенном диапазоне.Эффект обзора выглядит так: 'эти случайные точки равномерно распределены .

Ответы [ 3 ]

1 голос
/ 16 ноября 2011

Все n точек должны быть внутри круга.Диаметр этого круга - это максимальное расстояние (d_max) между любыми двумя точками.Используйте полярные координаты: r = (d_max / 2) * sqrt(rand(n, 1)); phi = 2 * pi * rand(n, 1); Квадратный корень необходим для получения равномерной плотности ареала.Преобразуйте полярные координаты в координаты Декарта обычным способом: x = x0 + r .* cos(phi); y = y0 + r .* sin(phi);, где (x0, y0) дает центр круга.

Результат для d_max = 10:

Scattered points

Гистограмма расстояний между точками:

Distance histogram

1 голос
/ 16 ноября 2011

Ограничение случайных координат относительно точки (x, y) на расстоянии 'r' больше похоже на выбор случайных точек в круге с центром (x, y) и радиусом 'r'.* Ниже должно помочь

http://www.mathworks.com/matlabcentral/answers/294-generate-random-points-inside-a-circle

0 голосов
/ 16 ноября 2011

Использовать модуль

mod([1:5],3)
ans =
    1     2     0     1     2 

http://www.mathworks.co.uk/help/techdoc/ref/mod.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...