Hi,
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?
Thanks

 採用された回答

Yazan
Yazan 2021 年 8 月 17 日

0 投票

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
val = 1×2
30 10
Idx
Idx = 1×2
8 1

2 件のコメント

Orr Streicher
Orr Streicher 2021 年 8 月 17 日
thanks!
Yazan
Yazan 2021 年 8 月 17 日
You may also use Matlab native function maxk instead of sorting the values. This might save you some processing power.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Spline Postprocessing についてさらに検索

タグ

質問済み:

2021 年 8 月 17 日

コメント済み:

2021 年 8 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by