How can I search a binary array inside other bigger binary array?

For example I have the A array
A = [1 0 0 1 0,0 0 0 0 0,0 1 0 1 0,0 0 0 0 0]
I need to seach how many times is the B array in A.
B = [1 0,0 0]

2 commentaires

Jan
Jan le 26 Oct 2015
Modifié(e) : Jan le 26 Oct 2015
Are you sure that both arrays are vectors? The commas might indicate, that you want matrices.
Would "4 times" be a satisfying answer?
No, you´re right, they are matrices. And yes, 4 times would be a satisfying answer.

Connectez-vous pour commenter.

 Réponse acceptée

Thorsten
Thorsten le 6 Nov 2015
Modifié(e) : Thorsten le 6 Nov 2015
A = [1 0 0 1 0;0 0 0 0 0;0 1 0 1 0;0 0 0 0 0]
B = [1 0;0 0]
Embed A into a larger matrix of nans because nlfilter sets boundary values to 0; the following code is just valid for 2x2 matrices B
A2 = nan(size(A)+2))
A2(2:end-1, 2:end-1) = A;
nnz(nlfilter(A2, [2 2], @(x) (isequal(x,B))))

3 commentaires

Thanks. That works perfect for my needs.
I have a problem with the code. If a change matrix B, for example:
B = [0 0;0 0]
I don´t get the right number of times this pattern is in matrix A (in this case it must be find "1". Could you help me?
Thanks
Thanks Thorsten.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by