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

She*_*hew 2 arrays sorting indexing matlab matrix

我正在尝试基于另一个数组对数组进行排序.我尝试使用索引返回的sort方法,但它在某种程度上表现得很奇怪.

y = [1 2 3; 2 3 4] 
x = [1 3 4; 2 2 3] 
[yy, ii] = sort(y,'descend');
Run Code Online (Sandbox Code Playgroud)

yy =
   2     3     4   
   1     2     3

ii =
   2     2     2
   1     1     1
Run Code Online (Sandbox Code Playgroud)

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

x(ii) =  
      2     2     2
      1     1     1
Run Code Online (Sandbox Code Playgroud)

我期待矩阵是:

x(ii) =

    2     2     3 
    1     3     4
Run Code Online (Sandbox Code Playgroud)

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

Sar*_*ama 7

ii是行下标,但由您输入为线性索引.在继续之前,您需要将它们转换为相关的线性指数

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

ans =

     2     2     3
     1     3     4
Run Code Online (Sandbox Code Playgroud)