Sorting 如何在MATLAB中根据第二行对二维数组进行排序?
我得说“a” a= 如果我使用函数 b=排序(a) 给出一个答案 b= 但是我想要像这样的 b= 平均第二行应该被排序,但ist行的元素应该保持不变,并且应该与第二行相对应。您可以仅在第二行上使用该函数,然后使用索引输出对整个数组进行排序:Sorting 如何在MATLAB中根据第二行对二维数组进行排序?,sorting,matlab,Sorting,Matlab,我得说“a” a= 如果我使用函数 b=排序(a) 给出一个答案 b= 但是我想要像这样的 b= 平均第二行应该被排序,但ist行的元素应该保持不变,并且应该与第二行相对应。您可以仅在第二行上使用该函数,然后使用索引输出对整个数组进行排序: [junk,sortIndex] = sort(a(2,:)); b = a(:,sortIndex); 怎么样 a = [1 4 5; 6 7 2] a = 1 4 5 6 7 2 >> [
[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(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按指定的行排序,所有其他的按其顺序排序。垃圾可以替换为:[~,sortIndex]这在Matlab的较新版本中更干净。不幸的是,它非常不向后兼容,当您为使用稍旧版本的Matlab的用户编写代码时,可能会非常尴尬。
[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
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