Этот список представляет собой минимальный пример ситуацииХороший способ сортировки, и удерживать показатели исходного списка в Matlab
list = [0.2 0.1 0.3 0.4 0.7 0.5 0.6 0.9 1.0];
реальной жизни я разбирайтесь
sorted_list = sort(list, 'descend');
Мне нужно, чтобы получить 10% индексов с наивысшими значениями в списке .
Моя попытка
% Take the amount of indexes to 10%
limit = size(sorted_list);
size = limit(1);
limit = ceil(0.1*size);
% find the index numbers from the original list which corresponds to the highest indexes
for j = 1:limit
value = sorted_list(j);
for k = 1:size
if value == list(k)
refine_set(j) = k;
% here much resources used, should be able stop if matching
% early, so should be able to stop the for-loop somehow
% I do not want to use while-loop, since in some cases, this would cause
% infinite loop
end;
end;
end;
Я начинаю думать, что должен быть лучший способ сделать это. Функция max, похоже, не имеет параметра, который позволяет мне принимать индексы тех, которые представляют 10% максимальных значений.
Что такое хороший способ получить индексы исходного списка, которые представляют 10% максимальных значений в списке?
Что такое хорошая структура данных для этой задачи?