Минковский расстояние и пдист
Уравнение расстояния Минковского можно найти здесь.
Если мы хотим рассчитать расстояние Минковского в 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
,