Matlab 流经二进制矩阵

Matlab 流经二进制矩阵,matlab,matrix,Matlab,Matrix,我已经被提供了一个mxn随机生成的二进制矩阵,它允许通过值1而不是通过值0。我需要确定是否存在从随机生成矩阵的顶部到底部的流路径。1必须彼此相邻。它是用来在Matlab中编程的。 任何关于如何编码问题的有用资源或算法示例的参考都将不胜感激 我有一些代码,最初搜索第一行中的第一个1。 代码搜索当前1下方和附近的所有周围位置。流量只能沿对角线向下移动,直接向左或直接向右移动 我的目的是,考虑到上述限制,看看是否有一种方法可以只在1之后从矩阵的顶部遍历到底部 Random=randi([0 1],6,

我已经被提供了一个mxn随机生成的二进制矩阵,它允许通过值1而不是通过值0。我需要确定是否存在从随机生成矩阵的顶部到底部的流路径。1必须彼此相邻。它是用来在Matlab中编程的。 任何关于如何编码问题的有用资源或算法示例的参考都将不胜感激

我有一些代码,最初搜索第一行中的第一个1。 代码搜索当前1下方和附近的所有周围位置。流量只能沿对角线向下移动,直接向左或直接向右移动

我的目的是,考虑到上述限制,看看是否有一种方法可以只在1之后从矩阵的顶部遍历到底部

Random=randi([0 1],6,6)


n =0;
while Random[0,n] ~= 1
        n=n+1;
end
CoOrds = [0,n];

for i = 0:5
    if Random[i+1, n-1] == 1
        n=n-1;
    elseif Random [i,n-1] == 1
        i = i-1;
        n = n-1;
    elseif Random [i+1,n] ==1
        n=n;
    elseif Random [i+1,n+1] ==1
        n=n+1;
    elseif Random[i,n+1] == 1
        i = i-1;
        n=n+1;
    end
end
您可以使用和检查路径是否存在:

lb = bwlabel(Random, 8);  %// find 8-connected regions of the random mask
st = regionprops(lb, 'BounbdingBox');  %// find bounding boxes for all regions
b = vertcat(st.BounbdingBox);
有效路径是其边界框高度(在
'boundingbox'
中的第4个条目)等于
大小(随机,1)
的路径:

您可以使用和检查路径是否存在:

lb = bwlabel(Random, 8);  %// find 8-connected regions of the random mask
st = regionprops(lb, 'BounbdingBox');  %// find bounding boxes for all regions
b = vertcat(st.BounbdingBox);
有效路径是其边界框高度(在
'boundingbox'
中的第4个条目)等于
大小(随机,1)
的路径:


请修复:
while Random[0,n]~=1
和所有未来访问
Random
以使用MATLAB语法。查看以下算法:和。虽然可以使用matlab内置函数来找到答案,但我建议您查看算法并尝试学习它们,它们非常有用且广泛使用。@KarstenHaas毫无疑问。你有“我如何编写一个算法”,然后是一个没有解释你想让我们用它做什么的算法。请修复:
而Random[0,n]~=1
,以及所有将来访问
Random
以使用MATLAB语法的方法。看看以下算法:和。虽然可以使用matlab内置函数来找到答案,但我建议您查看算法并尝试学习它们,它们非常有用且广泛使用。@KarstenHaas毫无疑问。你有“我如何写一个算法”,然后是一个没有解释你想让我们用它做什么的算法。