3

重複の可能性:
MATLABで1つの列に関して2次元配列を並べ替えるにはどうすればよいですか?
行列を別の行列で並べ替える

429個の値のベクトル「A」と429x200個の値の行列「B」があります。AとBの行は同じインデックスを共有しています。私のベクトル「A」には値1:1:429が含まれていますが、それらはベクトル全体でランダムに順序付けられています。Aを1から429の順序でインデックス付けするように並べ替え、行列「B」の行を新しく並べ替えた「A」と同じ順序で並べ替えたいと思います。

これは、forループなしですばやく簡単に実行できますか?

これが私のポイントを説明するための例です:

A =
    5
    3
    1
    2
    4


 B =
    3   7   0   4   6
    1   2   5   0   8
    4   0   2   0   0
    3   0   1   0   5
    2   2   3   4   4


sortedA = 

1
2
3
4
5

sortedB =

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

みんなありがとう!

4

1 に答える 1

2

サンプルデータ:

A = [ 5, 3, 1, 2, 4 ]';

B = [ 3, 7, 0, 4, 6; 1, 2, 5, 0, 8; 4, 0, 2, 0, 0; 3, 0, 1, 0, 5; 2, 2, 3, 4, 4 ]

行列を並べ替えます。

[sortedA,IX] = sort(A);

sortedB = B(IX,:);

sortedA =
 1
 2
 3
 4
 5

sortedB =
 4     0     2     0     0
 3     0     1     0     5
 1     2     5     0     8
 2     2     3     4     4
 3     7     0     4     6
于 2012-12-21T22:47:49.713 に答える