图和矩阵
这个例子展示了稀疏矩阵的一个应用,并解释了图和矩阵之间的关系。
图是一组节点,它们之间有指定的连接或边。图形有很多种形状和大小。一个例子是巴克敏斯特富勒测地线穹顶的连通性图,它也是足球或碳-60分子的形状。
在MATLAB®中,您可以使用巴基
函数生成测地线穹顶的图形。
[B,V] =结实的;G =图(B);p = plot(G);轴平等的
您还可以为节点指定坐标以更改图形的显示。
pxdata = V(:,1);p.YData = V(:,2);
的巴基
函数可以用来创建图形,因为它返回一个邻接矩阵。邻接矩阵是表示图中节点和边的一种方法。
为了构造图的邻接矩阵,节点编号为1到n,那么n × n矩阵的每个元素(i,j)如果节点i与节点j相连,则设为1,否则设为0。因此,对于无向图,邻接矩阵是对称的,但对于有向图则不一定如此。
例如,这是一个简单的图及其相关的邻接矩阵。
定义矩阵a。A = [0 1 1 0;1 0 0 1;1 0 0 1;0 1 10 0];绘制显示连接节点的图片。cla次要情节(1、2、1);gplot(A,[0 1;1 1;0 0; 10 0],“。”);文本([-0.2,1.2 -0.2,1.2],[1.2,1.2,-。2。2)(“1234”)”,...“HorizontalAlignment”,“中心”)轴([-1 2 -1 2],“关闭”)画一张邻接矩阵图。次要情节(1、2、2);Xtemp = repmat(1:4,1,4);Ytemp =重塑(repmat(1:4,4,1),16,1)';文本(xtemp闲置,ytemp闲置,char (' 0 '+ (:)),“HorizontalAlignment”,“中心”);线([。25 0 0 .25 NaN 3.75 4 4 3.75],[0 0 4 4 NaN 0 0 4 4])轴从紧
稀疏矩阵对于表示非常大的图特别有用。这是因为每个节点通常只连接到几个其他节点。因此,对于大型图,邻接矩阵中非零项的密度通常相对较小。巴基球邻接矩阵就是一个很好的例子,因为它是一个60 × 60对称稀疏矩阵,只有180个非零元素。这个矩阵的密度只有5%
由于邻接矩阵定义了图形,您可以通过使用邻接矩阵中条目的子集来绘制巴基球的一部分。
使用邻接
函数为图创建一个新的邻接矩阵。通过索引到邻接矩阵来显示巴基球的一个半球的节点,以创建一个新的、更小的图形。
图A =邻接(G);H =图(A(1:30,1:30));h = plot(h);
要可视化此半球的邻接矩阵,请使用间谍
函数绘制邻接矩阵中非零元素的轮廓。
注意,矩阵是对称的,因为如果节点i连接到节点j,那么节点j连接到节点i。
间谍((1:30,1:30)标题(“巴基球邻接矩阵的左上角”)
最后,这里有一个间谍
绘制整个巴基球的邻接矩阵。
间谍(A)标题(巴基球邻接矩阵)