maxk from subset of array

6 vues (au cours des 30 derniers jours)
Orr Streicher
Orr Streicher le 17 Août 2021
Commenté : Yazan le 17 Août 2021
I would like to solve the following prblem:
Lets say i have the vector :v=[10,22,3,-5,8,6,100,30,12,9]
I want to find the indicies and the values of the k largest number from a given subset, e.g: if the indices of the subset are [1,3,5,8] and k=2 the function will return: values=[10,30], indices=[1,8].
There is any suggestion how to implemet it?

Réponse acceptée

Yazan le 17 Août 2021
clc, clear
v = [10,22,3,-5,8,6,100,30,12,9];
subIdx = [1,3,5,8];
k = 2;
% sort values and get corresponding indices
[val, idx] = sort(v(subIdx), 'descend');
% get only k values
val = val(1:k);
% get actual indices
Idx = subIdx(idx(1:k));
val = 1×2
30 10
Idx = 1×2
8 1
  2 commentaires
Yazan le 17 Août 2021
You may also use Matlab native function maxk instead of sorting the values. This might save you some processing power.

Connectez-vous pour commenter.

Plus de réponses (0)


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by