2

私は行列(nxm)を持っています。そして、各行について、最初の 2 つの最大値を含む列のインデックスを知りたいです。

2 3 4 2
2 4 7 1
1 1 2 4
5 5 9 6
1 4 2 1
9 8 1 2

答えは次のとおりです。

2 3
2 3
3 4
3 4
2 3
1 2

matlab コマンドで取得するにはどうすればよいですか? for ループを使用したくない。私は試しました:

[x,y]=max(matrix')
y=y';

y は、最大要素の列インデックスを示します。今、これらの要素をゼロに設定して指示を繰り返しましたが、どうすればよいかわかりません。私はした:

matrix(:,y)=0;

しかし、うまくいきません。

4

1 に答える 1

6

A が行列の場合、上位 2 つのインデックスを並べ替えて選択します。

 [a ix]=sort(A,2)
 ans= ix(:,end-1:end)
于 2012-10-12T16:03:52.073 に答える