get_intervals

%% get intervals in which the valus are above certain val

% 1/21/2018

% by yingcai zheng

%

close all;

clc;

clear;

nx = 51;

xi= linspace(0, 20, nx);

yi= sin(xi);

yi(1) = 4;

yi(end)=3;

figure; hold on;

plot(xi, yi);

vbar = 0.4;

interval = get_intervals (yi, vbar);

for j =1: numel(interval)

disp([interval(j).li interval(j).ri])

plot(xi([interval(j).li interval(j).ri]),[ vbar vbar],'r-o');

end

function interval = get_intervals (yi, vbar)

%% by yingcai zheng

% 1/21/2018

%

ind = find(yi >= vbar);

k= 0;

i1=ind(1);

for j =1: numel(ind)-1

if ind(j+1)-ind(j) > 1

k =k +1;

interval(k).i1=i1;

interval(k).i2=j;

interval(k).li = ind(i1);

interval(k).ri=ind(j);

i1 = j + 1;

end

end

if interval(end).i2 ~= numel(ind)

k = k + 1;

interval(k).i1=numel(ind);

interval(k).i2=numel(ind);

interval(k).li=ind(end);

interval(k).ri=ind(end);

end

return;