Find places before or after zeros in vector

1 view (last 30 days)
Hi MATLAB-Community,
I'm searching for an elegant way to mark the places before and after zeros in a Vector.
e.g.:
a = 0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0
before = 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0
after = 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0
Has anybody an Idea that can help me with that Problem?
Thanks in advance!
Cheers
Christian

Accepted Answer

Ive J
Ive J on 26 Aug 2021
Edited: Ive J on 26 Aug 2021
a = [0 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 1 0];
before = [0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0];
after = [0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0];
da = [diff(a), 0];
bcheck = circshift(da > 0, 1);
acheck = da < 0;
all(bcheck == before)
ans = logical
1
all(acheck == after)
ans = logical
1
This may not cover leading and trailing zeros, though before and after zeros may not make sense in that case.

More Answers (0)

Categories

Find more on Downloads in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!