使用matlab,检查2d矩阵的所有行中是否存在连续零间隔

时间:2017-04-12 10:03:47

标签: matlab

使用Matlab,我如何确定是否存在具有特定长度的连续间隔,其中2d矩阵中所有行的所有元素都为零?我知道我可以使用嵌套的for循环来做到这一点,但我想知道是否有更有效的方法。

提前致谢

1 个答案:

答案 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