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

时间:2015-01-20 01:40:27

标签: matlab

如果向量x属于R^nI的索引子集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。

1 个答案:

答案 0 :(得分:0)

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

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