Мне нужно инициализировать некоторые трехмерные точки, и я хочу, чтобы они были равномерно распределены по всему кубу. Есть ли какие-то творческие способы сделать это?
Я использую итеративный алгоритм максимизации ожиданий и хочу, чтобы мои начальные векторы «равномерно охватывали» пространство.
Например, предположим, что у меня есть восемь точек, которые я хочу равномерно распределить в кубе размером 1x1x1. Я бы хотел, чтобы точки в углах куба с длиной стороны 0,333 находились в центре большего куба.
2D-пример ниже. Обратите внимание, что красные точки равноудалены друг от друга и от краев. Я хочу то же самое для 3D.
В тех случаях, когда количество точек не имеет целого кубического корня, я могу оставить некоторые «пробелы» в расположении.
В настоящее время я беру кубический корень из количества точек и использую его для расчета количества точек и желаемого расстояния между ними. Затем я перебираю точки и увеличиваю координаты X, Y и Z (в шахматном порядке, чтобы Y не увеличивался до тех пор, пока X не вернется к 0, то же самое для Z с учетом Y).
Если есть простой способ сделать это в MATLAB, я бы с удовольствием им воспользовался.