查找给定条件和指定索引集的索引

Finding index of giving conditions and specified index set

给定一个向量 x 属于 R^nS=(1, ..., n) 的索引子集 I,我想找到 [=12] 的最大元素的索引=] 在`I 中,或在完整向量中的索引。

换句话说,如何在原始向量的索引space中找到子向量的最大元素的索引?

在 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。

您可以简单地使用 max 的两个输出版本。第二个输出将为您提供找到最大元素的位置 location。但是,如果找到最大值的条目有多个,它只会找到 第一次出现的 。然后,您可以使用 max 的第二个输出索引到 I 以获得您想要的内容。因此:

[~,loc] = max(x(I));
i = I(loc);