2014-09-24 2 views
1

Мне очень нужна дополнительная помощь по Excel.Euclidean distance matrix in excel

Предположим, у меня есть 4 разных сегмента. Каждый сегмент имеет 7 числовых атрибутов.

A(200;43;23;1.5;16;50000;14) 
B(250;41;23;2.1;19;70000;13) 
C(179;37;25;3.4;20;15000;12) 
D(402;49;19;1.9;25;99000;11) 

Предположим, что каждый сегмент имеет свою собственную строку (1-4), и каждый атрибут имеет свой собственный столбец (A-G). Я вычисляя расстояние евклидовой между каждой отдельной строки с помощью этого уравнения:

=SQRT(SUMPRODUCT((A1:G1-B2:G2)^2)) 

Как я могу изменить это уравнение так, что, если бы я создал матрицу, как это:

\ A B C D 
A 
B 
C 
D 

Там должно быть 0 на диагоналях и расстояние между сегментами в ячейках, где заданные сегменты пересекаются? Каждый раз, когда я использую «$» для исправления строки или столбца, я получаю неверные результаты, и у меня кончились идеи.
Надеюсь, я выразил свою проблему, чтобы все могли понять.

ответ

1

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

=SQRT((SUM(A1:G1)-SUM(A2:G2))^2) 

Что касается матрицы, я использовал КОСВЕННЫЙ, чтобы заставить его работать. Однако, чтобы сделать формулу простейшим, я должен был назвать строки и столбцы матрицы 1 до 4. Вот образ конечного результата:

enter image description here

Формулы вы видите на скриншоте в первом ячейка матрицы (L2) составляет:

=SQRT((SUM(INDIRECT("A"&$K2&":G"&$K2))-SUM(INDIRECT("A"&L$1&":G"&L$1)))^2) 

После ввода этой формулы в L2, я просто перетащить скопировано вниз к L5, а затем перетащить копируется весь столбец матрицы через к O.

в основном, что эта формула делает, используя матрицу r ow и column, чтобы создать косвенный вызов для массива каждого сегмента. (Так что в основном для работы, заголовки столбцов и строк вашей матрицы должны соответствовать строкам, в которых находятся данные сегмента.)

+0

INDIRECT - именно то, что я ищу. Благодарю. –

1

Для тех, кто пытается это сделать, я уверен, что приведенное выше не вычисляет евклидово расстояние, так как это требует сумму квадратов разностей между каждым элементом, а не только сумма квадратов общей разницы

Что-то вроде это работает (я думаю):

= SQRT ((SUM (INDIRECT ("B «& $ G3)) - СУММА (НЕПРЯМЫЕ (« B »& H $ 1)))^2+ (СУММА (НЕПРЯМЫЕ (« C »& $ G3)) - СУММА (НЕПРЯМЫЕ (« C »& H $ 1)))^2 + (SUM (КОСВЕННЫЙ ("D" & $ G3)) - SUM (НЕПРЯМЫЕ ("D" & H $ 1)))^2)

Смежные вопросы