Accessing a value in a vector from a conditional statement

2 views (last 30 days)
Hi All,
Im trying to access a vlue in the middle of my vector as per below. From my mv value of 13.073 i should receive the value of 25 from the vector, ie next highest from mv. I would like to get both the value and index
v=[6 10 25 35 50 65 80]
x=10.02
y=10.47
mv=max(x*.125,y*1.25)
for k=1:length(v)
if v(k)>mv
mv=v(k)
ind=k
end
end
Thanks,
Everyone

Answers (2)

Star Strider
Star Strider on 5 Jul 2020
There are several ways to do this.
My approach:
v=[6 10 25 35 50 65 80];
x=10.02;
y=10.47;
mv=max(x*.125,y*1.25);
ind = interp1(v,(1:numel(v)), mv, 'next')
Out = v(ind)
producing:
ind =
3
Out =
25
I prefer not to overwrite existing variables, so I have the output as ‘Out’.
.

Image Analyst
Image Analyst on 5 Jul 2020
Use find():
v=[6 10 25 35 50 65 80]
x=10.02
y=10.47
mv=max(x*.125,y*1.25)
[~, index] = find(v >= mv, 1, 'first')
value = v(index)
index =
3
value =
25
  1 Comment
Frank Lehmann
Frank Lehmann on 5 Jul 2020
Thanks guys much appreciated it also helps having a few different solutions to keep in mind next time.

Sign in to comment.

Categories

Find more on Operators and Elementary Operations 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!