how to gain minimum value
3 views (last 30 days)
Show older comments
Hi everybody,
r=[1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2]
L/200<r
for example L=246 ,
I want minimum r regarding L/200<r
What I should do??
Thanks.
0 Comments
Accepted Answer
Mischa Kim
on 11 Dec 2014
Edited: Mischa Kim
on 11 Dec 2014
Hamid you could use
r_min = r(min(find(r*200>246==1)))
r_min =
1.3000
4 Comments
Guillaume
on 13 Dec 2014
Hello Mischa,
I must say I was very surprised by your answer. I am standing by my words though, it is very wrong.
First, whenever a student writes a>b==1, it raises alarm bells. Has operator precedence been understood? Did he mean (a>b)==1 or a>(b==1)? So, it's not a good idea to give this sort of constructs to matlab beginners. In any case, in terms of readability, a>b is certainly more readable than a>b==1. For that matter,
r_filtered = r(r*200>246);
filtered_first = r_filtered(1);
would be a lot more readable and more importantly express what you're doing better.
Secondly, from an algorithm point of view min(find(x)) is also wrong. The find has to go over all the element of x to return the indices of the non-zeros, and the min then has to go over all these indices to ultimately return the first one. find(x, 1) only has to go over x until the first non-zero element. This is obviously a lot more efficient.
More importantly, your answer doesn't answer the question asked: "I want minimum r". It never looks for a minimum in r, so I'm afraid it also wrong conceptually.
See Also
Categories
Find more on Logical 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!