matlab - 如何在两个现有节点之间添加新节点
问题描述
我Graph
在 MATLAB 中创建了以下内容
function dummyGraph()
tail = [1 2 3 4 5 6 6 7 8 9 10 10 12 13 14 15];
head = [2 3 4 5 6 7 12 8 9 10 15 11 13 14 15 16];
Graph = graph(tail,head)
plot(Graph)
NodeNumber = 1:16
Neighbor={};
for NodeIdx =NodeNumber
Neighbor{NodeIdx} = neighbors(Graph,NodeIdx);
end
end
我想在两个连续节点之间添加节点。
我正在尝试以下方法
1.获取 中存在的所有节点的邻居节点Graph
。2. 在两个连续的邻居之间添加四个新节点。
我可以在代码中实现第一步。我找不到用于在现有节点之间添加节点的 MATLAB 命令。addnode(G,nodeIDs)
MATLAB 文档中给出了一个命令。但是,我不确定如何使用这个命令来实现我的案例。
我想询问有关如何进行的建议
解决方案
这是解决方案,
function AddNodes()
tail = [1 2];
head = [2 3];
Graph = graph(tail,head)
NVertex = size(Graph.Nodes);
NVertex = NVertex(1);
%% Name Nodes
NNode = string(1:NVertex)';
Graph.Nodes.Name = cellstr(NNode);
%% Adding nodes
GraphEdges = table2cell(Graph.Edges(:,1));
NEdges = size(GraphEdges);
NEdges = NEdges(1);
Source=[];
Sink =[];
for edge = 1:NEdges
Graph = addnode(Graph,4);
source = GraphEdges{edge}(1);
sink = GraphEdges{edge}(2);
Graph = rmedge(Graph,source,sink);
Add4Musk = Graph.Nodes.Name(end-3:end);
TobeAdded = vertcat(source,Add4Musk,sink);
for node = 1:length(TobeAdded)-1
source = TobeAdded(node);
sink = TobeAdded(node+1);
Graph = addedge(Graph,source,sink);
end
end
%% Plot graph
plot(Graph,'Layout','subspace3')
我很高兴知道是否有其他方法可以完成这项任务。
推荐阅读
- java - onActivityResult() 永远不会被调用
- javascript - 根据用户是否登录,有哪些方法可以显示不同的导航栏?
- python-3.x - tdqm==4.11.2 和 twine==1.11.0 python 之间的版本冲突
- node.js - 摩卡测试突然停止:找不到模块'pg-native'
- python - 如何在 matplotlib 中创建双头箭头(带文本)
- php - 如何在重定向之前在客户端设置延迟?
- sql - 周期函数在 teradata 中未按预期工作
- php - 安装时出现 Wordpress http 500 错误
- r - data.table 在每一列上应用函数
- asp.net-mvc - 接受来自 MVC 控制器的 websocket 升级