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

现在,我想根据c索引安排t;我需要得到t新的排序基于c如何根据一个索引对矩阵进行排序?

t = [ 2 6 
     4 2 
     6 9]; 

如何排序基于一个指标我有一个矩阵?

这里是我的尝试:

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

你假设该行的索引从底部开始任意矩阵tc? – rahnema1

+0

no t(c,:)给了我答案 –

+0

't(c,:)'给你'[2 6; 6 9; 4 2]'这是不同于你想要的。 – rahnema1

回答

0

这个代码利用的关键:在MATLAB可用值映射。您可以纳入到这个功能,并调整它对于我已经重新标记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

是的。比我的方法简单得多 –

相关问题