查找给定条件和指定索引集的索引
Finding index of giving conditions and specified index set
给定一个向量 x
属于 R^n
,S=(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);
给定一个向量 x
属于 R^n
,S=(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);