Подтвердить что ты не робот

Вычислить расстояние между двумя векторами разной длины

Существуют разные методы расчета расстояния между двумя векторами одной длины: евклидовой, манхэттенской, хэмминской...

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

4b9b3361

Ответ 1

Формула евклидова расстояния находит расстояние между любыми двумя точками в евклидовом пространстве.

Точка в евклидовом пространстве также называется евклидовым вектором.

Вы можете использовать формулу Евклидова расстояния для вычисления расстояния между векторами двух разных длин.

Для векторов различной размерности применяется тот же принцип.

Предположим, что вектор более низкой размерности также существует в пространстве высших мер. Затем вы можете установить все недостающие компоненты в векторе нижнего измерения равным 0, чтобы оба вектора имели одинаковую размерность. Затем вы использовали бы любую из упомянутых формул расстояния для вычисления расстояния.

Например, рассмотрим двумерный вектор A в с компонентами (a1,a2) и трехмерный вектор B в с компонентами (b1,b2,b3).

Чтобы выразить A в , вы должны установить его компоненты в (a1,a2,0). Тогда евклидово расстояние d между A и B можно найти по формуле:

d² = (b1 - a1)² + (b2 - a2)² + (b3 - 0)²

d = sqrt((b1 - a1)² + (b2 - a2)² + b3²)

В вашем конкретном случае компоненты будут либо 0, либо 1, поэтому все различия будут -1, 0 или 1. Квадратные различия будут тогда 0 или 1.

Если вы используете целые числа или отдельные биты для представления компонентов, вы можете использовать простые побитовые операции вместо некоторой арифметики (^ означает XOR или exclusive or):

d = sqrt(b1 ^ a1 + b2 ^ a2 + ... + b(n-1) ^ a(n-1) + b(n) ^ a(n))

И мы полагаем, что конечными компонентами A являются 0, поэтому окончательная формула будет:

d = sqrt(b1 ^ a1 + b2 ^ a2 + ... + b(n-1) + b(n))

Ответ 2

Вы можете попытаться рассчитать среднее минимальное расстояние между двумя векторами p и q размеров n и m (n ~ = m):

d = 1/n * sum_i=1:n ( min_j=1:m (p(i) - q(j))) + 1/m * sum_j=1:m (min_i=1:n (p(i) - q(j)))

Ответ 3

Вы не можете напрямую вычислять расстояния между векторами различной длины.

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

Существует множество функций (на самом деле, бесконечно много), которые можно использовать:

  • Заполните нули. Это проще всего сделать. Скажем, если у вас есть машина и нужно вычислить ее расстояние до самолета, это помещает автомобиль на уровень моря.
  • Посмотрите на недостающие значения где-нибудь. В примере с автомобильным самолетом вы запустили свою базу геоданных и просмотрели высоту с долготы/широты.
  • Используйте некоторую математическую функцию.

Поскольку результат вычисления расстояния сильно зависит от функции, которая преобразует более короткий вектор в более длинный, каждый должен четко понимать, какая функция используется. Либо потому, что все в полях согласны с тем, что имеет смысл только одна функция, или потому, что функция, используемая при преобразовании, отмечена.