Минковский расстояние и пдист

Уравнение расстояния Минковского можно найти здесь.

Если мы хотим рассчитать расстояние Минковского в MATLABЯ думаю, что мы можем сделать следующее (поправьте меня, если я ошибаюсь):

dist=pdist([x(i);y(j)],'minkowski');

До этого момента приведенная выше команда будет выполнять уравнение, показанное в ссылке.

Теперь, к расстоянию Минковского, я хочу добавить эту часть |-m(i)|^p, где m(i) это какая-то ценность.

Я видел pdist исходный код, но, хочу спросить, как я могу изменить расстояние Минковского, добавив эту простую часть, либо в pdist код или из вызывающего кода (я думаю, что нам, возможно, придется внести некоторые изменения в параметры).

Благодарю.

1 ответ

Решение

Я думаю, что это делает то, что вы хотите: определить пользовательскую функцию расстояния и использовать ее в качестве аргумента pdist:

p = 2;
fun = @(x,y) sum(abs(x-y).^p + abs(m(i)).^p ).^(1/p);
pdist([x(i);y(j)],fun)

Или напрямую использовать

sum(abs(x(i)-y(j)).^p + abs(m(i)).^p ).^(1/p)

Я предполагаю, что i а также j это просто индексы, которые проходят через элементы x а также y,

Другие вопросы по тегам