【问题标题】:How can I use Matlab to plot a network graph from a Matrix如何使用 Matlab 从矩阵中绘制网络图
【发布时间】:2015-08-03 21:35:15
【问题描述】:

我希望有人能够帮助我深入了解我的问题?

我正在从事一个模拟小镇道路网络的学术项目。为了简单起见,我的道路网络是一个nxn矩阵(一个例子是下面的9x9矩阵A)...

matrixA =
a1    b2    c3    d4    e5    f6    g7    h8    i9
a2    b0    c0    d0    e5    f0    g0    h0    i9
a3    b0    c0    d0    e5    f0    g0    h0    i9
a4    b0    c0    d0    e5    f0    g0    h0    i9
a5    b5    c5    d5    e5    f5    g5    h5    i9
a6    b0    c0    d0    e5    f0    g0    h0    i9
a7    b0    c0    d0    e5    f0    g0    h0    i9
a8    b0    c0    d0    e5    f0    g0    h0    i9
a9    b9    c9    d9    e9    f9    g9    h9    i9

我的目标是从上面的矩阵生成一个图形,具有以下属性: 只要存在非零元素,所有非零元素都是图中的顶点,并且自上而下和横向连接(连接器将是有向边)。例如,元素 a1 连接到 b2; b2连接到c3; c3 连接到 d4 等。a1 也连接到 a2; a2至a3; a3至a4;和a4到a5。随后,a5 连接到 nothwords,向南和向右(即 a5 连接到 a4、b5 和 a6)。

最终目标是能够搜索图并遍历它。

感谢任何建议/指导。如果我需要提供更多信息,请告诉他们。

提前致谢

【问题讨论】:

  • 非常感谢您的 cmets。 @Cleb,我从原子生成矩阵开始。现在我有库存,因为我不知道如何识别节点并将其传递给 matlab 中的绘图仪。丹,我已经看到了这个链接和其他几个链接,包括以下... stackoverflow.com/questions/17308565/… uk.mathworks.com/matlabcentral/fileexchange/… 我想我使用 gplot 的探针是我需要帮助识别坐标。谢谢,
  • gplot 真是个好主意!我只想说另一种介绍数据的方式 - 使用 pcolor 并使用它,就像黑色是墙壁,白色 - 道路等等。
  • 非常感谢@Mikhail_Sam - 正如我所说,我的问题是生成坐标,我不知道如何生成坐标,gplot 需要绘制图形。否则,gplot 似乎是正确的选择。

标签: matlab networking matrix graph


【解决方案1】:

您可能想尝试更多地处理您的矩阵。如果您要为每个矩阵条目(a1 = 1、b2 = 2 等)使用索引值,则可以生成一个表示您的图形的稀疏矩阵。

您上面的示例将导致如下图(在 Matlab 的稀疏方法中):

(1,2)  1
(1,10) 1
(2,3)  1
(3,4)  1
(4,5)  1
(5,6)  1
(5,14) 1
.
.
.
(10,19) 1
(14,23) 1
.
.
.

为简单起见,我假设所有边的值都为 1。这当然取决于您。

已经生成了这种稀疏矩阵(G),你可以使用下面的命令来显示它

h = view(biograph(G,[],'ShowWeights','on'))

还有很多其他方法可以用于以这种方式设置的图表,例如最大流量分析 (http://ch.mathworks.com/help/bioinfo/ref/graphmaxflow.html)

我希望这能回答你的问题。

【讨论】:

  • 您的建议听起来很棒 - 尽管我将用特定值表示节点。我会尝试并尽快更新。谢谢
  • 要为每个节点保留一个特定的值,您可以“自行分配”该值(例如,对于 a1: (1,1)=12)。这不会影响流程,并且可以在需要时轻松检索以进行进一步处理。
猜你喜欢
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
相关资源
最近更新 更多