2017-10-22 8 views
0
t = [ 4 2 
     2 6 
     6 9]; 
c = [ 2 
     3 
     1]; 

ここで、tcインデックスに沿って配置したいと思います。私は新しいtcに基づいてソートを取得する必要があります。私は持っている1つのインデックスに基づいて行列をソートする方法は?

t = [ 2 6 
     4 2 
     6 9]; 

私が持っている一つの指標に基づいて行列をソートする方法は?ここで

は、私が試したものです:MathWorks社のMATLABで利用可能な値のマッピング:

h = cell(1,1); 
h{1,1} = t; 
h{1,1}(c) 
+1

を再ラベルまし任意の行列tcのためにそれを微調整することができますが、行のインデックスが下から始めると仮定していますか? – rahnema1

+0

いいえ t(c、:)私に答えを返します –

+0

't(c、:)'はあなたの望むものとは異なる '[2 6; 6 9; 4 2]'を返します。 – rahnema1

答えて

0

このコードは、キーを使用しています。あなたは、関数にこれを組み込むと、私はkeySet

t = [ 4 2;2 6; 6 9]; % original matrix 
keySet = [ 2 3 1]; % original c indexing vector 

valueSet= cell(1,size(t,1)); % create a cell matrix to hold the row elements of t 
for i =1:size(t,1) 
    valueSet{1,i} = t(i,:); % insert row elements into cell array 
end 
mapObj = containers.Map(keySet,valueSet); % map the keys to the values 

keySet = sort(keySet,'descend'); % reorder the keys 
for j=1:size(keySet,2) 
    t(j,:) = mapObj(keySet(1,j)); % rebuild matrix t with new order 
end 
+0

ありがとうございました、私たちは単にt(c、:) –

+0

yepを使用することができます。私の方法よりはるかに簡単 –

関連する問題