使用matlab,检查2d矩阵所有行中是否存在连续零区间
使用Matlab,如何确定2d矩阵中所有行的所有元素都为零的具有特定长度的连续间隔?我知道我可以使用嵌套for循环来实现这一点,但我想知道是否有更有效的方法来实现这一点 提前感谢这里有一个- 样本运行-使用matlab,检查2d矩阵所有行中是否存在连续零区间,matlab,Matlab,使用Matlab,如何确定2d矩阵中所有行的所有元素都为零的具有特定长度的连续间隔?我知道我可以使用嵌套for循环来实现这一点,但我想知道是否有更有效的方法来实现这一点 提前感谢这里有一个- 样本运行- >> a a = 2 1 0 0 0 0 0 1 0 2 2 0 2 1 0 0 0 0 0 0 0
>> a
a =
2 1 0 0 0 0 0 1 0 2
2 0 2 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 2
2 1 2 0 0 0 0 0 2 0
>> continuous_zero_rows(a, 3)
ans =
1
>> continuous_zero_rows(a, 4)
ans =
0
>> a(2,4) = 0;
>> a
a =
2 1 0 0 0 0 0 1 0 2
2 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 2
2 1 2 0 0 0 0 0 2 0
>> continuous_zero_rows(a, 4)
ans =
1
查看我在文章《1D卷积》中对
~any(a,1)
的编辑,应该会更快,对吧?@bicker我不确定~any(a,1)
在这里有什么帮助或应该做什么。我正在沿着每一行寻找n
0的孤岛。那么,如何在那里合并n
,这一点还不确定;我正在寻找0的完整列的频道。
>> a
a =
2 1 0 0 0 0 0 1 0 2
2 0 2 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 2
2 1 2 0 0 0 0 0 2 0
>> continuous_zero_rows(a, 3)
ans =
1
>> continuous_zero_rows(a, 4)
ans =
0
>> a(2,4) = 0;
>> a
a =
2 1 0 0 0 0 0 1 0 2
2 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 2
2 1 2 0 0 0 0 0 2 0
>> continuous_zero_rows(a, 4)
ans =
1