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

现有一个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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-23
可以利用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
第2个回答  2009-08-31
已经有人回答了。
相似回答