我正在尝试根据另一个数组对数组进行排序。我尝试了使用索引返回的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
进行排序?
答案 0 :(得分:7)
ii
是行下标,但是由您输入为线性索引。
您需要先将它们转换为相关的线性索引,然后再进行操作
>> szx = size(x);
>> x(sub2ind(szx, ii, repmat(1:szx(2),szx(1),1)))
ans =
2 2 3
1 3 4