在矩阵中获取前两个最大值

Tit*_*llo 2 matlab max matrix

我有一个矩阵(nxm).我想知道,对于每一行,包含前两个最大值的coloums的索引:

2 3 4 2
2 4 7 1
1 1 2 4
5 5 9 6
1 4 2 1
9 8 1 2
Run Code Online (Sandbox Code Playgroud)

答案应该是:

2 3
2 3
3 4
3 4
2 3
1 2
Run Code Online (Sandbox Code Playgroud)

如何使用matlab命令获取它?我不想用于循环.我尝试过:

[x,y]=max(matrix')
y=y';
Run Code Online (Sandbox Code Playgroud)

y给出了最大元素的列索引.现在我将这些元素归零并重复说明,但我不知道该怎么做.我惶恐不安:

matrix(:,y)=0;
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

bla*_*bla 6

如果A是你的矩阵,那么排序并选择前两个指数,

 [a ix]=sort(A,2)
 ans= ix(:,end-1:end)
Run Code Online (Sandbox Code Playgroud)