【发布时间】:2010-08-14 10:45:14
【问题描述】:
我有数组说“a”
一个=
1 4 5
6 7 2
如果我使用函数 b=排序(a)
给出答案
b =
1 4 2
6 7 5
但我想要类似的回答
b =
5 1 4
2 6 7
意思是第 2 行应该被排序,但是第 1 行的元素应该保持不变并且应该对应于第 2 行。
【问题讨论】:
我有数组说“a”
一个=
1 4 5
6 7 2
如果我使用函数 b=排序(a)
给出答案
b =
1 4 2
6 7 5
但我想要类似的回答
b =
5 1 4
2 6 7
意思是第 2 行应该被排序,但是第 1 行的元素应该保持不变并且应该对应于第 2 行。
【问题讨论】:
排序(a',2)'
把它分开:
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
这里的关键是 sortrows 按指定的行排序,其他的都按照它的顺序。
【讨论】:
您可以只在第二行使用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 的第二个参数来获得您想要的排序顺序,然后将其应用于整个事物。
【讨论】: