У меня кратчайший путь, соединяющий множество точек, где начальная точка A фиксирована.У меня есть общее расстояние, а также попарное расстояние, а также упорядоченные индексы.Я хочу разделить путь: если общее расстояние пути больше определенного значения, я хочу обрезать его и начать новый путь и т. Д.
Мне удалось достичь его с помощью cumsum
иaccummary
(я использую MATLAB), но это действительно уродливое решение, мне было интересно, есть ли другой способ?
Dmax = max(totdistance);
th = Dmax/4; % threshold
toSplit = distances; % pairwise distance
nSplit = cumsum(distances/th);
subs = floor( nSplit ) + 1;
newPaths = accumarray( subs(:), (1:numel(subs)).', [], @(x) {cumsum(toSplit(x))});
Таким образом, я могу также использовать затраты на общую стоимость и пару, если они предоставляются, вместорасстояние например.