/ / Как да преобразуваме голяма стойност в матрица на двойка разстояние в малка стойност? - MATLAB, разстояние, двойка

Как да конвертирате голяма стойност в матрица от разстояние по двойки на малка стойност? - matlab, разстояние, двойка

позволявам D да бъде двойно разстояние между два комплектанаблюдения. Използвах персонализирана функция за разстояние, за да представя сходството. За разлика от повечето мерки за подобие, начинът, по който съм избрал за изчисляване на разстоянието, дава голяма стойност за подобни двойки.

    0 1 2

0   0 4 6
1   5 9 7
2   2 1 4

В нормални случаи ще разгледаме 0 и 0 точките са най-сходни двойки, тъй като стойността на разстоянието между тях е 0, В моя случай 1 и 1 са най-сходните двойки, тъй като имат най-голяма стойност 9, Трябва да използвам матрицата на двойката за извършване на групиране. Нуждая се от начин за превръщане на големите стойности в малки стойности, които могат да се използват чрез метод за групиране.

Отговори:

1 за отговор № 1

Ако разбирам правилно, просто трябва да обърнете реда на сортиране на елементите. Следното уравнение преобразува най-големите елементи в най-малките елементи на новата матрица и обратно:

distance = max(max(D))*ones(size(D)) - D

където D е матрицата от вашата персонализирана функция за разстояние. За вашия пример по-горе това ще доведе до

9 9 9   0 4 6   9 5 3
9 9 9 - 5 9 7 = 4 0 2
9 9 9   2 1 4   7 8 5

Ако знаете, че няма отрицателни числа вМожете да използвате следното уравнение, което просто компенсира всички елементи на вашата матрица (за да се избегне разделяне с нула) и ги инвертират:

distance = 1./(D+1)