如果向量x
属于R^n
,I
的索引子集S=(1, ..., n)
,我想找到x
的最大元素的索引在`我,或完整向量中的索引。
换句话说,如何在原始矢量的索引空间中找到子矢量的最大元素的索引?
在MATLAB中执行此操作的最佳方法是什么?
目前,我使用:
xmax = max(x(I));
i = I(x(I) == xmax);
i = i(1);
我正在寻找一种更有效的方法来实现这一目标。
x = [4, 2, 4];
S = [1, 2, 3];
I = [2, 3];
所需的输出为3。
答案 0 :(得分:0)
您可以简单地使用max
的两个输出版本。第二个输出将为您提供找到最大元素的位置。但是,如果有多个条目找到最大值,则只会找到第一次出现。然后,您可以使用max
的第二个输出来索引I
以获得您想要的内容。因此:
[~,loc] = max(x(I));
i = I(loc);