Мне нужно создать метод генерации единичного вектора в трех измерениях, который указывает в случайном направлении с использованием генератора случайных чисел. Распределение направления ДОЛЖНО быть изотропным.
Вот как я пытаюсь создать случайный единичный вектор:
v = randn(1,3);
v = v./sqrt(v*v');
Но я не знаю, как закончить изотропную часть. Любые идеи?
Как сгенерировать единичный вектор, указывающий в случайном направлении с изотропным распределением направления?
Ответ 1
Вы делаете это правильно. Случайное нормальное распределение координат дает вам равномерное распределение направлений.
Чтобы создать 10000 равномерных точек на единице, вы запустите
v = randn(10000,3);
v = bsxfun(@rdivide,v,sqrt(sum(v.^2,2)));
plot3(v(:,1),v(:,2),v(:,3),'.')
axis equal
Ответ 2
Я ничего не знаю о Matlab, но мне кажется, что вы можете попробовать создать две случайные полярные координаты (theta и phi), а затем преобразовать их в декартовы координаты с помощью trig.