在向量中找到一个向量

The*_*ver 6 matlab

我有一个(7,6)逻辑数组,如下所示:

validY2_A =

 0     0     0     0     0     0
 0     0     0     0     0     0
 0     0     0     1     0     0
 1     0     0     1     1     0
 1     1     1     0     0     1
 1     1     1     0     1     1
 0     1     1     1     1     1
Run Code Online (Sandbox Code Playgroud)

我想创建一个(1,6)逻辑向量'contig',显示上面的矩阵在每列中是否有3个连续的.例如,结果将是:

contig =

[1, 1, 1, 0, 0 ,1];
Run Code Online (Sandbox Code Playgroud)

我试过strfind,但是有两个问题,第一个是它是一个列数组(转置要么根本没有帮助.或者需要大量额外的代码暂时使用.第二个问题是因为它是一个逻辑数组,如果我将其更改为字符串,则值全部变为true或false,并且尝试使其工作也没有结果.是否有方法搜索列向量以查找是否另一个特定列vector存在于其中的任何位置?我想在每列中搜索[1; 1; 1];

谢谢

Sha*_*hai 5

怎么样

t = imfilter( validY2_A, ones(3,1) );
contig = any( t >= 3, 1 );
Run Code Online (Sandbox Code Playgroud)

或者(由@Dan建议):

t = conv2( validY2_A, ones(3,1), 'same');
contig = any( t >= 3, 1 );
Run Code Online (Sandbox Code Playgroud)

正如@GeorgeAprilis所建议的那样,可能需要将逻辑矩阵转换validY2_A为双重优先:

validY2_A = double( validY2_A );
Run Code Online (Sandbox Code Playgroud)

  • +1但应该用`conv2`替换`imfilter`,因为它可能无法访问图像处理工具箱 (3认同)