1
a = [1 2 3;4 5 6;7 8 9;];

[~ ,im]=sort(reshape(a,1,[])'descend');

では、実際に出力として得られるのは何ですか?それはソートされた配列ではありませんか?

4

2 に答える 2

1

ドキュメントを読んでください。の 2 番目の出力パラメーターsortは、値の配列ではなく、インデックスの配列です。

于 2012-06-14T11:35:30.960 に答える
1
a = [1 2 3;4 5 6;7 8 9;];
A = reshape(a,1,[]);
[B ,im]=sort(A,'descend');

Bソートされた水平ベクトルです。 imはインデックスなので、 をall(A(im)==B)返しますtrue

reshape コマンドは特に必要ありません。または、同じ結果を得る別の方法は次のとおりです。

A = a(:)';

a(:) は任意の配列から列ベクトルを作成し、' はそれを水平配列に転置します。(' は、a の要素が複素数の場合も複素共役しますが、あなたの要素は複素数ではないため、ここで機能します。)

あなたが探していないことに少し驚いています

B = sort(a,'descend'); 

これにより、各列が降順でソートされた 3x3 マトリックス出力が得られます。

于 2012-06-15T01:39:32.247 に答える