2016-11-30 90 views
-2

的曲线图是由两件事情,一组nodes的V和一组edges U形表示,如对[1 2]在V.节点1连接到节点2现在循环通过不同的Matlab的结构

,我的曲线图和其组顶部/节点:

V = [1 2 3 4 5 6]; 

和其边缘:

U = {[1 6],[2 3],[3 5],[2 4],[5 1]}; 

如何编写循环以检查顶部编号1 V(1)是否与顶部编号2 V(2)连接,位于边缘列表U?动机背后


背景为这个问题

  1. 我需要找到,如果图形使用Matlab是二分。
  2. 因为我需要将这两个顶部分开放置。
+0

如果在它们之间没有边,所以没有联系,我不明白。不是? – obchardon

+3

这不是解决你的作业的地方。请告诉我们你到目前为止所尝试的,或者至少你的方法。 – Chris311

+1

@ Chris311我没有要求整个解决。我只需要1个函数,由于对Matlab的了解不够,我无法编写它。我会在下次尝试改进我的问题。谢谢 – GR2096

回答

0

我该如何编写for循环来检查top number 1是否与top number 2连接?

这里是它的功能。创建一个名为areConnect.m文件,并把它放在它:

function areConnected = areConnect(topA, topB, U) 

    for i = 1 : numel(U) 

     vector = cell2mat(U(i)); 

     if topA == vector(1) && topB == vector(2) 

      areConnected = true; 
      return 

     end 

     if topB == vector(1) && topA == vector(2) 

      areConnected = true; 
      return 

     end 

    end 

    areConnected = false; 

end 

这里对您的主程序,你可以测试一下:

V = [1 2 3 4 5 6] 
U = {[1 6],[2 3],[3 5],[2 4],[5 1]} 

areConnected16 = areConnect(V(1), V(6), U) 
areConnected12 = areConnect(V(1), V(2), U) 

这将导致以下的输出:

V = 
    1  2  3  4  5  6 
U = 
    [1x2 double] [1x2 double] [1x2 double] [1x2 double] [1x2 double] 
areConnected16 = 
    1 
areConnected12 = 
    0 

参考文献:

  1. https://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-cell-array.html
  2. https://www.mathworks.com/help/matlab/ref/specialcharacters.html
+1

非常感谢! – GR2096