我有一个包含值的矩阵,我希望找到最高n
最小值的索引。
我使用以下代码查找最小值:
[r,c]=find(Result==min(min(Result)));
我无法在堆栈溢出上找到任何其他questions来回答这个问题,请帮忙
答案 0 :(得分:2)
也许你可以这样做:
sorted = sort(Result(:));
topten = sorted(1:10);
[~,ia,~] = intersect(Result(:),topten(:)); % // Get the indices of the top ten values
[r,c]=ind2sub(size(Result),ia); % // Convert the indices to rows and columns
答案 1 :(得分:1)
使用prctile
(统计工具箱)查找适当的阈值,然后使用索引选择高于该阈值的元素:
x = magic(4); %// example
n = 5; %// we want the top n elements
M = numel(x);
p = prctile(x(:), (M-n)/M*100);
indices = find(x>p); %// result in the form linear indices
[row, col] = find(x>p); %// result in the form of row and column indices
在这个例子中:
>> x
x =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> indices.'
ans =
1 8 12 13 15
>> row.'
ans =
1 4 4 1 3
>> col.'
ans =
1 2 3 4 4
>> x(indices).'
ans =
16 14 15 13 12
重复元素的示例:
>> x = [1 1 2 5; 3 4 3 5];
>> n = 5;
给出
>> indices.'
ans =
2 4 6 7 8
>> row.'
ans =
2 2 2 1 2
>> col.'
ans =
1 2 3 4 4
>> x(indices).'
ans =
3 4 3 5 5