Как получить любое случайное значение списка в n-мерной матрице / массиве в python? - PullRequest
0 голосов
/ 01 мая 2020

Предположим, у нас есть несколько предопределенных операторов положений в двухмерном или трехмерном пространстве (например, сгенерированный манипулятором робота с осями / шарнирами x, y, z, a, b). Как получить любой оператор положения (того же формата x, y, z, a, b) между этими точками в Python (SciPy, NumPy, MatPlotLab, et c ...)?

Например, "Что такое утверждение позиции для x = -2,5 и y = 152,8"

Для лучшего понимания я приложил небольшую иллюстрацию моей проблемы.

any point in an n-dimensional space

1 Ответ

1 голос
/ 01 мая 2020

По существу, для вашей задачи:

  1. Рассчитайте ограничивающий прямоугольник, который соответствует заданным точкам.
  2. Создайте случайную точку в ограничивающем прямоугольнике.
  3. Если случайная точка не находится в выпуклой оболочке данных точек, go до шага 1.

Для двумерных случаев, если вы знаете, что все формы, которые вас интересуют, являются выпуклыми, то это является относительно тривиальным: разделите фигуру на треугольники, выберите один из них случайным образом на основе их площади и создайте случайную точку в этом треугольнике. Но для более высоких измерений это далеко не тривиально. Фактически, выпуклая оболочка, вероятно, будет намного меньше, чем ограничивающая рамка с более высокими размерами, поэтому многие точки могут быть отклонены. И вычисление самой выпуклой оболочки может быть сложным. Ответы на этот вопрос есть некоторые идеи о том, как найти, находится ли точка внутри выпуклой оболочки.

Если вы можете принимать приближения, вы также можете предварительно рассчитать количество точек, которые находятся в выпуклой затем, корпус, каждый раз, когда вам нужна случайная точка:

  • Выберите одну из предварительно рассчитанных точек случайным образом.
  • Вычислите случайную точку, которая "близка" к выбранной точке (например, точка, сдвинутая на нормально распределенное расстояние в каждом измерении).
  • Зажим случайной точки ограничивающей рамкой.

Недостатком является то, что случайные точки будут иметь вид плотные, как предварительно рассчитанные точки, и не обязательно равномерно распределенные.

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