# lower and upper index in sorted vector

8 views (last 30 days)
Ravindra on 13 Jul 2020
Edited: Ravindra on 13 Jul 2020
I have a vector with timestamps as following
1521753105.031429052352905
1521753105.081429004669189
1521753105.131428956985474
1521753105.181428909301758
1521753105.231429100036621
1521753105.281429052352905
1521753105.331429004669189
1521753105.381428956985474
1521753105.431428909301758
1521753105.481429100036621
1521753105.531429052352905
1521753105.581429004669189
How to determine the lower and upper index to the current time ?
which is in between the 4th and 5th values.
1521753105.231428861618042

#### 1 Comment

madhan ravi on 13 Jul 2020
...042 I don’t see that in the above example?

John D'Errico on 13 Jul 2020
Edited: John D'Errico on 13 Jul 2020
Regardless, the answer in MATLAB is to use discretize. This will tell you the index of the interval that contains your given time stamp.
T = [ 1521753105.031429052352905
1521753105.081429004669189
1521753105.131428956985474
1521753105.181428909301758
1521753105.231429100036621
1521753105.281429052352905
1521753105.331429004669189
1521753105.381428956985474
1521753105.431428909301758
1521753105.481429100036621
1521753105.531429052352905
1521753105.581429004669189];
T0 = 1521753105.231428861618042;
ind = discretize(T0,T)
ind =
4
I'm not sure if you noticed the problem here, but it should point out something important.
T0 does not actually lies in the interval you show it to lie in. That is, ...231428... comes BEFORE ...231429....
So the timestamp you indicate lies between T(4) and T(5). discretize tells you that. Of course, for this simple problem, sum will tell you as much.
sum(T <= T0)
ans =
4

#### 1 Comment

Ravindra on 13 Jul 2020
Thanks, I removed the picture and modified the question.