Вы можете создать структурный массив, который вы индексируете, следующим образом:
NodeStruct(3).Coords = [x,y];
NodeStruct(3).NextNode = [1,2,6,10];
Однако, скорее всего, это лучше решить с помощью матрицы смежности.Это матрица NxN, где N - число узлов, и где adj(i,j)
истинно, если узлы i
и j
находятся на заданном расстоянии друг от друга.В этом случае матрица смежности симметрична, но это необязательно, если вы укажете, например, 10 ближайших узлов для каждого узла.Этот случай также может быть обработан с помощью матрицы смежности.
Учитывая матрицу Nx2 с координатами coord
, где каждая строка является координатами для одного узла, вы можете написать:
dist = sqrt(sum((reshape(coord,[],1,2) - reshape(coord,1,[],2)).^2, 3));
adj = dist < 100; % or whatever your threshold is