Identify missing section's boundaries in an index
1 view (last 30 days)
Show older comments
dear matlab community, I started working with matlab about a month ago so I am still a beginner and this question might (I hope) have a very easy solution.
I working on large arrays (2000000 points) and for an analysis I am extracting only specific parts of it. When I extract the data I want to work with I get an vector of the indexes of the point I need, something like:
index=[1,2,...,412,413,1265,1266,...,2874,2875,9654,9655,...]
and I want to get something like: B={[413 1265][2875 9655]} or any way to identify both ends of the missing part.
so far i have tried to use diff but it doesnt return the upper limit and the whole thing isn't really working! I hope that you can understand what I want to do and find a solution. I'm adding here things I've been trying but it not an actual script just bits of it...
index_b=find(data_v < (-0.06)); %condition
k_b=time_v(find(diff(index_b) > 1))'; %get lower index
A_b = cell(1, length(k_b)+1); %prealloc
for i = 1:length(k_b)
A_b{i} = index_b(count_b+1:k_b(i)); %creat cell array
count_b=k_b(i);
end
t_b=[];
for i= 1:length(A_b); %merge the cells
t_b=[t_b,A_b{i}];
end
time_b=time(t_b);
0 Comments
Answers (1)
Greg Dionne
on 16 Mar 2017
Do you just want all the elements less than -0.06?
Then
data_v(data_v < -0.06)
should give you want you want.
If you need a single range you can do:
data(istart:istop)
0 Comments
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!