У меня есть набор данных в следующем формате:
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. Может ли кто-нибудь помочь мне.... заранее спасибо....
d(l4,l1)
, но нетd(l1,l4)
. Откуда в ваших данных вы берете эту информацию:l2->l4 [For user u2]
?. В каком формате предоставляются данные?d(l2,1)
явно опечатка. Что такоеd
? Он уже определен? - person Daniel   schedule 12.03.2014