我有阵列说 “一个”如何在MATLAB中对第二排排序二维数组?
一个=
1 4 5
6 7 2
如果我使用功能 B =排序的(a)
给出ANS
B =
1 4 2
6 7 5
但我想像
B =
5 1 4
2 6 7
平均2行应该进行排序,但IST行的元素应该保持不变,应该通讯员行第二。
我有阵列说 “一个”如何在MATLAB中对第二排排序二维数组?
一个=
1 4 5
6 7 2
如果我使用功能 B =排序的(a)
给出ANS
B =
1 4 2
6 7 5
但我想像
B =
5 1 4
2 6 7
平均2行应该进行排序,但IST行的元素应该保持不变,应该通讯员行第二。
您可以使用只在第二排的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
以获得您想要的排序顺序,然后将其应用于整个事情。
调用sortRows(一 '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排序由指定行,所有的人遵循的顺序。
垃圾可以被替换为: [〜,sortIndex]这是在MATLAB – MatlabDoug 2010-08-18 14:48:13
的较新版本干净了一点遗憾的是,这是非常不向后兼容,并且可以可怕的尴尬,当你的用户代码谁使用稍微大一点Matlab版本。 – Jonas 2010-08-19 19:13:17