Asked by Teemu
on 4 Mar 2013

I have a cumulative vector, size is about 200. I want to pick up that index where value is 0,5 or value which is next to it. For example (0.1, 0.23, 0.42, 0.49, 0.52, 0.56,...), so i want to pick up index which corresponding to value 0.52. How can I do it?

*No products are associated with this question.*

Answer by Jos (10584)
on 4 Mar 2013

Accepted answer

Here is one approach:

v = [0.1 0.23 0.4 0.52 0.56 1.1] idx = find(v >= 0.5,1,'first') v(idx)

Answer by Jos (10584)
on 5 Mar 2013

To do this for multiple values, take a look at my function NEARESTPOINT:

Answer by Jan Simon
on 4 Mar 2013

Edited by Jan Simon
on 5 Mar 2013

v = [0.1 0.23 0.4 0.52 0.56 1.1]; [absdist, nearest] = min(abs(v - 0.5)); % **SOLUTION IS HERE** !!! if absdist == 0 % or: <= eps(v(index)) following = index; else following = index + 1; end

nearestValue = value(nearest); followingValue = value(following);

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply Today
## 3 Comments

## Jan Simon (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/65786#comment_133960

Does "next" mean the next larger element or the element with the minimal distance? In the 2nd case, the answer would be 0.49, in opposite to your example.

## Teemu (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/65786#comment_134235

Minimal distance, in this case it will be 0.49

## Teemu (view profile)

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/65786#comment_134236

actually I need both