I have array say "a"
a =
1 4 5
6 7 2
如果我使用函数 b=sort(a),它会给出以下结果:b =
1 4 2
6 7 5
但我想要的答案是:
b =
5 1 4
2 6 7
意思是第二行应该排序,但第一行的元素应保持不变,并且应与第二行对应。
sortrows(a',2)'
Pulling this apart:
a = 1 4 5
6 7 2
a' = 1 6
4 7
5 2
sortrows(a',2) = 5 2
1 6
4 7
sortrows(a',2)' = 5 1 4
2 6 7
您可以只在第二行上使用SORT函数,然后使用索引输出来对整个数组进行排序:
[junk,sortIndex] = sort(a(2,:));
b = a(:,sortIndex);
怎么样?
a = [1 4 5; 6 7 2]
a =
1 4 5
6 7 2
>> [s,idx] = sort(a(2,:))
s =
2 6 7
idx =
3 1 2
>> b = a(:,idx)
b =
5 1 4
2 6 7
sort
的第二个参数来获取所需的排序顺序,然后将其应用于整个内容。