gpt4 book ai didi

matlab - 在 MatLab 中查找通过 boolean 矩阵的路径长度

转载 作者:太空宇宙 更新时间:2023-11-03 20:07:06 25 4
gpt4 key购买 nike

我有一组 5x5 boolean 矩阵,例如下面的一个:

0 1 0 1 1
1 1 1 0 0
1 0 0 1 1
1 1 1 1 0
0 0 0 0 1

我想要一种方法来输出,对于每个连接的 1 系列(连接意味着一个 1 在另一个 1 的左边、右边、上面或下面,对角线不算数)它在 x 轴上占据的长度以及它在 y 轴上所占的长度。例如。对于这个矩阵,会有一个从左到右一直延伸,所以 x 中有 5 个单位,y 中有 4 个单位:

  1
1 1 1
1 1 1
1 1 1 1

右上角还会有一个集合,它在 x 轴上有 2 个单位,在 y 轴上只有 1 个单位:

      1 1

在右下角会有一个,只在 x 和 y 中占用 1。

我想为这个矩阵输出一些 xmax1=5 ymax1=4 的东西,xmax2=2 ymax2=1, xmax3=1 ymax3=1。我已经设法编写了一些正确的代码,但仅适用于简单矩阵。例如。其中只有一组连接的 1,并且 xmax 和 ymax 只是简单的直线,例如我可以这样做:

1 1 1 1 0
0 1 0 0 0
1 1 0 0 0
1 1 0 0 0
0 1 0 0 0

因为最长的 x 路径是一条穿过顶部的直线,而最长的 y max 是一条向下的直线。但是,如果它开始“蛇行”,例如:

0 0 1 0 0
0 1 1 0 0
0 1 0 0 0
0 1 1 0 0
0 0 1 1 1

我会得到 ymax=3 和 xmax=3 的结果,因为它们是最长的直线,而不是实际应该是距离最远的直线的长度,所以在这种情况下应该是 ymax= 5 和 xmax=4

我是 MatLab 的新手,正在尝试自学,因此我认为我可以想到很多可行的方法,但我想不出如何实现它们。我尝试了多种方法,但我不太清楚如何正确实现它们。

感谢您的帮助。

最佳答案

使用 bwconncomp() 识别4-connected 组件 及其特征,然后调用 regionprops() 以简化这些组件的某些属性的计算组件:

A = [0 1 0 1 1
1 1 1 0 0
1 0 0 1 1
1 1 1 1 0
0 0 0 0 1]

s = regionprops(bwconncomp(A,4),'BoundingBox');

s 是非标量结构,将包含每个组件的边界框 参数,即 [左上角 x,左上角 y , xwidth, ywidth].

例如:

s(1)
ans =
BoundingBox: [0.5 0.5 5 4]

请注意,有 3 个连通分量(单个元素也算在内):

bwconncomp(A,4)
ans =
Connectivity: 4
ImageSize: [5 5]
NumObjects: 3
PixelIdxList: {[11x1 double] [2x1 double] [25]}

关于matlab - 在 MatLab 中查找通过 boolean 矩阵的路径长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com