Directly using Index of max value without storing
3 次查看(过去 30 天)
显示 更早的评论
Hi,
I want to use the index of a maximum value in a vector directly without storing it as a variable. i.e:
I have a vector X = [1 3 2 9 2 1], and a vector Y = [10 20 30 50 60 70] and I want to extract the value in Y corresponding to the max value in X. I know I can use:
[M,I] = max(X); then
Value = Y(I);
But I can't work out how to do this in a single line without storing the value of "I", to acheive something like:
Value = Y(...index of max value of X...)
Any help greatly appreciated.
Thanks,
Matt
2 个评论
Stephen23
2016-7-26
@Matthew Knights: what output do you want if there are two identical maximum values ? E.g.:
X = [1 3 2 9 2 9]
Y = [10 20 30 50 60 70]
value = ???
采纳的回答
Guillaume
2016-7-26
This is one of the downside of matlab's syntax. It is not possible to chain expressions that use anything but the 1st return value. You have to use a temporary variable.
更多回答(1 个)
Andrei Bobrov
2016-7-26
out = Y(max(X)==X)
4 个评论
Guillaume
2016-7-26
Certainly not! There's no guarantee that the value in Y would be the same for identical max values in X.
This would work:
Y(find(max(X) == X, 1))
as long as X and Y are vectors. Reproducing the same behaviour for matrices would be harder.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!