根据另一个矩阵中的顺序对一个矩阵进行排序

时间:2018-09-16 12:53:59

标签: arrays matlab sorting matrix indexing

我正在尝试根据另一个数组对数组进行排序。我尝试了使用索引返回的sort方法,但是它的表现有些奇怪。

y = [1 2 3; 2 3 4] 
x = [1 3 4; 2 2 3] 
[yy, ii] = sort(y,'descend');

yy =
   2     3     4   
   1     2     3

ii =
   2     2     2
   1     1     1

但是我的x(ii)不是基于y排序的矩阵。

x(ii) =  
      2     2     2
      1     1     1

我希望矩阵为:

x(ii) =

    2     2     3 
    1     3     4

如何根据另一个矩阵x对矩阵y进行排序?

1 个答案:

答案 0 :(得分:7)

ii是行下标,但是由您输入为线性索引。 您需要先将它们转换为相关的线性索引,然后再进行操作

>> szx =  size(x);
>> x(sub2ind(szx, ii, repmat(1:szx(2),szx(1),1)))

ans =

     2     2     3
     1     3     4