2017-02-19 9 views
-3

MATLABで行列をソートする必要があるという問題があります。行列を並べ替える必要があります。 。Matlabの行列をベクトルにソートする

input: A= [ 9 9 8 ; 9 8 7; 9 7 6]; 
output: B= [ 9 9 9 9 8 8 7 7 6]; 
Index= [ 1 4 2 3 7 5 8 6 9]; 
+0

'を何:結果は、最初の列はAの最初の列内の要素の元の行(前マトリックスた)ソートされたベクトルであり、第2列の行列であり、インデックスは?私はそれが何であるか理解していません。 –

+1

row_の_equal値はどういう意味ですか?あなたは行列が長方形でなければならないことを知っていますよね? – EBH

+0

つまり、最初の行と2番目の行に8個ある場合は、最初の行の候補から順に選択する必要があります。 –

答えて

2

あなたは行番号のベクトルと行列を連絡することができます:

At = A.' % since you want to iterate over the rows you need to transpose the matrix first 
r = repmat(1:size(A,1),[size(A,2) 1]); 
[A_sorted] = sortrows([At(:) r(:)],-1) 

rはあなたに(Atの列数である)A内のすべての要素の行番号のベクトルを与えます。 sortrowsは、[At r(:)]の行を最初の列でソートし、2番目の列の行番号を同じ要素に揃えて保持します。

A_sorted = 
    9  1 
    9  1 
    9  2 
    9  3 
    8  1 
    8  2 
    7  2 
    7  3 
    6  3 
+0

申し訳ありませんが、リピートしますか?未定義関数です! –

+0

私はMatlab R2014b –

+0

を使用していますが、今でも動作していますが、まだ正解ではありません。行による索引の回答は1 = 1 2 3 1 2 2 3 3 –

関連する問題