Find intervals in a vector

14 views (last 30 days)
René Lampert
René Lampert on 10 Feb 2021
Answered: David Hill on 10 Feb 2021
Lets suppose we have the vector A=[0 5 7 8 0 0 0 1 9 6 0 0 1 2]. The goal is to extract the indices of the different intervals inside the vector A and write it in seperate vectors. With intervals I mean the nonzero numbers. So at the end of the code I want the vectors B=(2 3 4) C=(8 9 10) D=(13 14), where the entries are the indices of the intervals (consecutive nonzero numbers) in A.
Is there a possibility to accomplish this task in a general way ?
Thanks

Accepted Answer

David Hill
David Hill on 10 Feb 2021
a=find(A~=0);
b=[0,find(diff(a)>1),length(a)];
for k=2:length(b)
c{k-1}=a(b(k-1)+1):a(b(k));
end

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!