matlab数组中求最大的几个数并返回其位置

来源:百度知道 编辑:UC知道 时间:2024/06/30 23:04:35
现有一个1*10000的矩阵,要求其最大的前n个数。并且返回其在矩阵中的位置。举例如下。a=[3,15,6,21,18,2,18,19,1,4,7,29, 21 ,23 ,29 ,23, 14, 6, 9 ,29 ,31],求其最大的前4个数,分别是[29,29,29,31],要返回的结果是
[29,29,29,31
12,15,20,21]。也可以是[29,12;29,15;29,20;31,21]
明白了。谢谢。

可以利用sort函数给数列a从小到大排列,找前几个最大的。如下:
[b,i]=sort(a)。b为从小到大的数字,i为对应位置。要找前3个,如下输入:
>> a=[3,15,6,21,18,2,18,19,1,4,7,29, 21 ,23 ,29 ,23, 14, 6, 9 ,29 ,31];
>> [b,i]=sort(a)

b =

Columns 1 through 12

1 2 3 4 6 6 7 9 14 15 18 18

Columns 13 through 21

19 21 21 23 23 29 29 29 31

i =

Columns 1 through 12

9 6 1 10 3 18 11 19 17 2 5 7

Columns 13 through 21

8 4 13 14 16 12 15 20 21

>> b(19:21)

ans =

29 29 31

>> i(19:21)

ans =

15 20 21

已经有人回答了。