1

matlabで、別のベクトル値に基づいて行列の列をすばやく並べ替えようとしています。私が参照ベクトルを持っていると仮定しましょう:

a = [1 8 3];

そして、行で並べ替えたいマトリックス

b =[2 3 4
    5 6 4
    1 2 1];

そしてa、ソートされたaが

 a = [8 3 1]

ソートされた行列は次のようになります

b = [3 4 2 
     6 4 5
     2 1 1];

したがって、最初のベクトルのインデックスは列のインデックスと同じです。したがって、ベクトルの値に基づいて列を並べ替えます。

4

1 に答える 1

4

Matlab では、sort関数は 2 つの変数を返します。1 つ目は並べ替えられたベクトル/行列で、2 つ目は元のデータと組み合わせて並べ替えられた値を生成できる一連のインデックスです。

A = [ 5 4 1 2 3 ];

[A_sorted1, idx] = sort(A);

A_sorted2 = A(idx);

A_sorted1A_sorted2同等です。

の行b数が要素の数と等しい場合は、次のようにa単純に使用できます。

[~, idx] = sort(a);
b_sorted = b(idx,:);

列で並べ替えたい場合は、次を使用します。

b_sorted = b(:,idx);
于 2013-01-16T14:57:56.720 に答える