Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

subgraph

提取子图

说明

示例

H = subgraph(G,nodeIDs) 返回 G 的一个子图,其中仅包含 nodeIDs 指定的节点。

H = subgraph(G,idx) 使用逻辑向量指定子图节点。

示例

全部折叠

创建并绘制一个图。

s = [1 1 1 1 2 2 2 2 2 2 2 2 2 2 15 15 15 15 15];
t = [3 5 4 2 14 6 11 12 13 10 7 9 8 15 16 17 19 18 20];
G = graph(s,t);
plot(G,'Layout','force')

Figure contains an axes object. The axes object contains an object of type graphplot.

通过指定要包含的节点,从 G 提取子图。子图中的节点编号会重置。

idx = [2 15 16 17 18 19 20 1 3 4 5];
H = subgraph(G,idx);
plot(H,'Layout','force')

Figure contains an axes object. The axes object contains an object of type graphplot.

创建并绘制一个具有命名节点的加权图。

s = [1 1 1 2 2 2 8 8 8 8];
t = [2 3 4 5 6 7 9 10 11 12];
weights = [10 30 40 80 60 60 20 30 90 80];
names = {'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L'};
G = graph(s,t,weights,names);
plot(G,'EdgeLabel',G.Edges.Weight)

Figure contains an axes object. The axes object contains an object of type graphplot.

提取一个子图,其中包含节点 'B' 及其所有相邻节点。subgraph 保留节点名称和边权重。但是,与 G 相比较,H 中的数值节点 ID 经过重新编号。

N = neighbors(G,'B');
H = subgraph(G, ['B'; N]);
plot(H,'EdgeLabel',H.Edges.Weight)

Figure contains an axes object. The axes object contains an object of type graphplot.

输入参数

全部折叠

输入图,指定为 graphdigraph 对象。可使用 graph 创建一个无向图,或使用 digraph 创建一个有向图。

示例: G = graph(1,2)

示例: G = digraph([1 2],[2 3])

节点标识符,指定为一个或多个节点索引或节点名称。nodeIDs 选择 G 中的部分节点来生成子图 H

下表显示通过数值节点索引或节点名称引用一个或多个节点的不同方法。

形式单一节点多个节点
节点索引

标量

示例:1

向量

示例:[1 2 3]

节点名称

字符向量

示例:'A'

字符向量元胞数组

示例:{'A' 'B' 'C'}

字符串标量

示例:"A"

字符串数组

示例:["A" "B" "C"]

示例: H = subgraph(G,[1 2 5])

示例: H = subgraph(G,{'A' 'B' 'E'})

节点选择向量,指定为逻辑向量。子图仅包含 idx(J) 为逻辑值 1 (true) 的节点 J。节点 JH 中的索引为 I(J),其中 I = find(idx)

示例: subgraph(G,degree(G)>2)

数据类型: logical

输出参数

全部折叠

子图,以 graphdigraph 对象形式返回。H 仅包含根据 nodeIDsidx 选择的节点。G 中的其他节点(以及连接到这些节点的边)将被放弃。所选节点和边的节点属性和边属性会从 G 传入 H

有关图对象的详细信息,请参阅 graphdigraph

扩展功能

基于线程的环境
使用 MATLAB® backgroundPool 在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool 加快代码运行速度。

版本历史记录

在 R2015b 中推出