matlab - 如何根据距离分割最短路径
问题描述
我有连接一组点的最短路径,其中起点 A 是固定的。我有总距离、成对距离以及有序索引。我想分割路径:如果路径的总距离大于某个值,我想切割它并开始一条新路径等等。
我设法使用cumsum
and 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))});
这样我也可以使用 totcost 和 pairwaise 成本(如果提供),而不是例如距离。
解决方案
推荐阅读
- javascript - 使用一种方法让数组通过 V-for 循环进行迭代,但没有显示任何内容
- c++ - 在 Cython 中编译 C 和 C++ 源代码
- javascript - crypto-js 输出与节点加密不同
- kubernetes - Kubernetes 上的 Rundeck 不能做 https
- java - 如何删除文件?
- sql-server - 为一张表创建一些分区函数和方案
- java - 尝试多次添加相同的列表实例时出现 java.lang.StackOverflowError
- javascript - 在Angular 8中导入interactjs 1.7.2不起作用
- jenkins - 无法访问主机网络之外的 Jenkins 容器
- python-3.x - 在使用 ShapeTanimotoDist() 计算形状相似性之前在 Rdkit 中预对齐分子可能吗?