Matlab 可视化二维正方形上的路径

Matlab 可视化二维正方形上的路径,matlab,path,Matlab,Path,我想在matlab中可视化2D正方形上的所有路径 这段代码给出了下面的图,它由一个2D正方形和随机分布的1和0组成 每个1必须从上到下用线连接 如果有1,那么有一种方法,我必须画线。否则就没办法停下来 没有边界元素,每个元素有3种方式。每个元素可以向左、向右或向下移动 左上角的元素可以向右和向下移动 右上角的元素可以向左和向下移动 这是建模的算法 如何编写此代码 我在等待你的建议:)问题分析 要获取矩阵/图像中可能路径的信息,可以使用diff功能。它计算沿指定维度的两个相邻矩阵元素之间的差值

我想在matlab中可视化2D正方形上的所有路径

这段代码给出了下面的图,它由一个2D正方形和随机分布的1和0组成

每个1必须从上到下用线连接

如果有1,那么有一种方法,我必须画线。否则就没办法停下来

没有边界元素,每个元素有3种方式。每个元素可以向左、向右或向下移动

左上角的元素可以向右和向下移动

右上角的元素可以向左和向下移动

这是建模的算法

如何编写此代码

我在等待你的建议:)

问题分析 要获取矩阵/图像中可能路径的信息,可以使用
diff
功能。它计算沿指定维度的两个相邻矩阵元素之间的差值。 路径存在的条件是:

  • 元素与其相邻元素之间的差异必须
    0
  • 元素本身必须是
    1
  • 解决方案 下面的matlab程序将为每个元素创建3个矩阵,其中包含值
    1
    true
    ,每个元素都有一条到其相邻元素的路径

    matrix = logical([1 1 1 1 0; ...
              1 1 0 1 1; ...
              0 0 0 1 0; ...
              0 0 1 1 0])
    
    hasPathtoRight = false(size(matrix));
    hasPathtoRight(:,1:end-1) = (diff(matrix,1,2)==0) & (matrix(:,1:end-1)==1)
    
    hasPathtoLeft = false(size(matrix));
    hasPathtoLeft(:,2:end) = (diff(matrix,1,2)==0) & (matrix(:,2:end)==1)
    
    hasPathDown = false(size(matrix));
    hasPathDown(1:end-1,:) = (diff(matrix,1,1)==0) & (matrix(1:end-1,:)==1)
    
    结果 示例矩阵的结果如下所示:

    matrix =
    
      1  1  1  1  0
      1  1  0  1  1
      0  0  0  1  0
      0  0  1  1  0
    
    hasPathtoRight =
    
      1  1  1  0  0
      1  0  0  1  0
      0  0  0  0  0
      0  0  1  0  0
    
    hasPathtoLeft =
    
      0  1  1  1  0
      0  1  0  0  1
      0  0  0  0  0
      0  0  0  1  0
    
    hasPathDown =
    
      1  1  0  1  0
      0  0  0  1  0
      0  0  0  1  0
      0  0  0  0  0
    

    您可以使用这些矩阵在图形显示中绘制路径。

    请将代码添加为文本,而不是图像