使用Matlab,我如何确定是否存在具有特定长度的连续间隔,其中2d矩阵中所有行的所有元素都为零?我知道我可以使用嵌套的for循环来做到这一点,但我想知道是否有更有效的方法。
提前致谢
答案 0 :(得分:0)
这里有2D convolution
-
function out = continuous_zero_rows(a, n)
% a : 2D input array
% n : continuous length of zeros
out = any(all(conv2(double(a==0),ones(1,n))==n,1));
样品运行 -
>> 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