Matlab的sortrows
函数似乎在每个排序组中保持不变。有谁知道这是否真的如此,因为我找不到任何支持此文件的文件。
使用Matlab提供的sortrows示例:
A = {'德国' '卢卡斯&#39 ;; '美国' '威廉&#39 ;; '美国' '安德鲁&#39 ;; ... '德国' '安德烈亚斯&#39 ;; '美国' '奥利维亚&#39 ;; '德国' '朱莉娅'}
A =
'Germany' 'Lukas'
'USA' 'William'
'USA' 'Andrew'
'Germany' 'Andreas'
'USA' 'Olivia'
'Germany' 'Julia'
并应用sortrows(A, [1])
ans =
'Germany' 'Lukas'
'Germany' 'Andreas'
'Germany' 'Julia'
'USA' 'William'
'USA' 'Andrew'
'USA' 'Olivia'
在原始数据中看到,德国在第一列中依次是卢卡斯,安德烈亚斯,朱莉娅在第二栏上下阅读。这在最终结果中保留。
这种行为能得到保证吗?
答案 0 :(得分:2)
是
Matlab使用稳定的quick sort(如果他们不使用某些特定于数据的优化)。在大多数情况下,我认为Matlab使用稳定的排序,但不能在不查看源的情况下确定。
您最好的选择是联系Matlab技术支持,以确保他们的排序算法确实稳定,并且如果他们有任何计划在将来更改它。
sortrows
使用内部排序。你可以阅读来源:
>> edit sortrows
编辑:更多info
答案 1 :(得分:1)
我不知道sortrows
是否稳定,文档没有说(或者我在文档中找不到)。
但是,您始终可以通过添加具有排序整数的列(例如1:N
)并将其作为第二个值在此列上进行排序(如果新列是第三列,则在[1,3]
上排序)来实现稳定性。一个)。
答案 2 :(得分:0)
是的,那是1
的含义。如果您要放入[1,2]
,它会排序第二行。