Find where certain sequence of true/falses is placed inside a logical array

2 views (last 30 days)
Hello!
Assume that I have the following logical array:
x=[false;false;true;true;true;true;true;false;true;true;true]'
x = 1×11 logical array
0 0 1 1 1 1 1 0 1 1 1
I would like to construct a logical array which returns true at the index where the sequence [true;false;true] is found
Hence the result would look like this
result=[false;false;false;false;false;false;true;false;false;false;false]'
result = 1×11 logical array
0 0 0 0 0 0 1 0 0 0 0
Hope that the question is clear, thank you!

Accepted Answer

David Hill
David Hill on 13 Oct 2022
x=[false;false;true;true;true;true;true;false;true;true;true]';
f=strfind(x,[1 0 1]);
result=zeros(size(x));
result(f)=1
result = 1×11
0 0 0 0 0 0 1 0 0 0 0
  1 Comment
Enrico Gambini
Enrico Gambini on 13 Oct 2022
Edited: Enrico Gambini on 13 Oct 2022
Thank you!
For my purposes I would slightly change the code like this:
x=[false;false;true;true;true;true;true;false;true;true;true]';
f=strfind(x,[1 0 1]);
result=false(size(x));
result(f)=true
result = 1×11 logical array
0 0 0 0 0 0 1 0 0 0 0

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by