Как создать взвешенную матрицу смежности в Matlab

У меня есть набор данных в следующем формате:

UID     Lat    Long   LocID

u1      lt1    lg1    l1

u1      lt2    lg2    l2

u1      lt3    lg3    l3

u2      lt4    lg4    l4

u3      lt1    lg1    l1

u3      lt4    lg4    l4

Отсюда мне нужно сгенерировать неориентированный граф LocID-LocID. Для этого мне нужна взвешенная матрица в следующем формате.

    0           d(l1,l2)        0           0

  d(l2,1)          0         d(l2,l3)    d(l2,l4)

    0           d(l3,l2)        0           0

  d(l4,l1)      d(l4,l2)        0           0 

Поскольку пользователь-u1 присутствует в местах l1, l2 и l3, я считаю их видимыми ребрами в графе. А значит, существует ребро из l1 -> l2 и l2 -> l3. Из данного примера существует 4 ребра.

l1 -> l2 ; l2->l3 [For user u1]
l2->l4 [For user u2]
l1 -> l4 [For user u3]

здесь вес каждого ребра между двумя LocID вычисляется из заданной информации о широте и долготе. Например, d(l1,l2) = расстояние между LocID-1 и LocID-1 = расстояние между (lt1,lg1) и (lt2,lg2)

Расчет расстояния можно выполнить с помощью формулы гаверсинуса. Итак, это не проблема. Мне нужно выполнить эту задачу в Matlab. Может ли кто-нибудь помочь мне.... заранее спасибо....


person Pramit    schedule 12.03.2014    source источник
comment
Я не понимаю вопроса. Вопрос как создать матрицу с таким рисунком? Я не понимаю шаблон. Расстояние уже определено?   -  person Daniel    schedule 12.03.2014
comment
возможный дубликат списка смежности Matlab в матрице смежности   -  person tashuhka    schedule 12.03.2014
comment
отредактируйте вопрос для более подробной информации...   -  person Pramit    schedule 12.03.2014
comment
Теперь стало намного понятнее, но остались вопросы. Почему ваша матрица расстояний несимметрична? Есть d(l4,l1), но нет d(l1,l4). Откуда в ваших данных вы берете эту информацию: l2->l4 [For user u2]?. В каком формате предоставляются данные? d(l2,1) явно опечатка. Что такое d? Он уже определен?   -  person Daniel    schedule 12.03.2014


Ответы (1)


Возможно, вы ищете функцию pdist в наборе инструментов статистики.

Он вычисляет расстояния между точками с различными мерами расстояния, также разрешены пользовательские функции (например, ручки).

person jpjacobs    schedule 12.03.2014
comment
Спасибо за ваши предложения. Но я не беспокоюсь о расчете расстояния. Мне нужна взвешенная матрица смежности. - person Pramit; 12.03.2014
comment
Это именно то, что pdist дает вам. Я хочу сказать, что он действительно может обрабатывать любую метрику расстояния, которую вы хотите подключить. - person jpjacobs; 12.03.2014