nearest
半径范围内最近的邻点
说明
示例
最近节点
创建并绘制一个具有加权边的图。
s = [1 1 1 1 1 2 2 2 3 3 3 3 3]; t = [2 4 5 6 7 3 8 9 10 11 12 13 14]; weights = randi([1 10],1,13); G = graph(s,t,weights); p = plot(G,'Layout','force','EdgeLabel',G.Edges.Weight);
确定哪些节点在节点 1 周围半径为 15 的范围内。
nn = nearest(G,1,15)
nn = 9×1
5
7
2
3
4
6
8
12
9
源节点以绿色突出显示,最近的邻点以红色突出显示。
highlight(p,1,'NodeColor','g') highlight(p,nn,'NodeColor','r')
最近节点的距离
创建并绘制一个具有加权边的图。
s = [1 1 1 2 2 6 6 7 7 3 3 9 9 4 4 11 11 8];
t = [2 3 4 5 6 7 8 5 8 9 10 5 10 11 12 10 12 12];
weights = [10 10 10 10 10 1 1 1 1 1 1 1 1 1 1 1 1 1];
G = graph(s,t,weights);
plot(G,'EdgeLabel',G.Edges.Weight)
确定哪些节点在节点 3 周围半径为 5 的范围内,并返回到每个节点的距离。
[nn,dist] = nearest(G,3,5)
nn = 9×1
9
10
5
11
4
7
12
6
8
dist = 9×1
1
1
2
2
3
3
3
4
4
有向图中的入向邻点距离
创建并绘制一个具有加权边的有向图。
s = {'a' 'a' 'a' 'b' 'c' 'c' 'e' 'f' 'f'}; t = {'b' 'c' 'd' 'a' 'a' 'd' 'f' 'a' 'b'}; weights = [1 1 1 2 2 2 2 2 2]; G = digraph(s,t,weights); plot(G,'EdgeLabel',G.Edges.Weight)
确定节点 'a'
周围半径为 1 的范围内最近的节点,按照节点 'a'
的出向路径距离测量。
nn_out = nearest(G,'a',1)
nn_out = 3x1 cell
{'b'}
{'c'}
{'d'}
通过将半径指定为 Inf
,确定有入向路径通向节点 'a'
的所有节点。
nn_in = nearest(G,'a',Inf,'Direction','incoming')
nn_in = 4x1 cell
{'b'}
{'c'}
{'f'}
{'e'}
输入参数
s
— 源节点
节点索引 | 节点名称
源节点,以下表中的形式之一指定为节点索引或节点名称。
值 | 示例 |
---|---|
标量节点索引 | 1 |
字符向量节点名称 | 'A' |
字符串标量节点名称 | "A" |
示例: nearest(G,3,1)
示例: nearest(G,'a',5)
d
— 邻点距离半径
标量
邻点距离半径,指定为数值标量。
示例: nearest(G,3,1)
示例: nearest(G,'a',2.5)
名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: [nodeIDs,dist] = nearest(G,s,5,'Method','unweighted','Direction','incoming')
Direction
— 距离测量方向
'outgoing'
(默认) | 'incoming'
注意
只能为有向图指定 'Direction'
选项。
距离测量的方向,指定为逗号分隔的对组,其中包含 'Direction'
和下表中的选项之一。
选项 | 描述 |
---|---|
'outgoing' (默认值) | 距离是使用源节点 s 的出向路径计算的。 |
'incoming' | 距离是使用源节点 s 的入向路径计算的。 |
示例: nearest(G,s,d,'Direction','incoming')
Method
— 最短路径算法
'auto'
(默认) | 'unweighted'
| 'positive'
| 'mixed'
最短路径算法,指定为逗号分隔的对组,其中包含 'Method'
和下表中的选项之一。
选项 | 描述 |
---|---|
'auto' (默认值) |
|
'unweighted' | 广度优先计算,将所有边权重都视为 |
'positive' | 迪杰斯特拉算法,要求所有边权重均为非负数。 |
'mixed' (仅适用于 digraph ) | 适用于有向图的 Bellman-Ford 算法,要求图没有负循环。 尽管对于相同的问题, |
注意
对于大多数图,'unweighted'
是速度最快的算法,然后是 'positive'
和 'mixed'
算法。
示例: nearest(G,s,d,'Method','positive')
输出参量
nodeIDs
— 最近邻节点 ID
节点索引 | 节点名称
最近邻节点 ID,如果 s
是数值则以节点索引形式返回;如果 s
是节点名称则以节点名称形式返回。节点按照从最近到最远的方式排列。如果指定的距离内没有节点,则 nodeIDs
为空。即使图中包含自环,nodeIDs
也永远不会包含源节点 s
。
使用 H = subgraph(G,[s; nodeIDs])
从原图形 G
中提取最近邻点的子图。
dist
— 邻点距离
向量
邻点距离,以向量形式返回。dist(j)
是从源节点 s
到相邻节点 nodeIDs(j)
的距离。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
名称-值参量必须为常量。
仅支持
'positive'
、'unweighted'
和'auto'
方法。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
版本历史记录
在 R2016a 中推出
另请参阅
shortestpath
| distances
| shortestpathtree
| neighbors
| successors
| predecessors
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)