Matlab中整数三元组的字典顺序
Lexicographic ordering of triplets of integers in Matlab
我有以下问题:我有一个 N
整数三元组数组(即 N
x3
矩阵),我想在 Matlab 中按字典顺序对其进行排序。为此,我想到了使用Matlab内置的sort
算法,但我想问一下我的想法是否正确,或者是否存在更简单的方法(最好使用Matlab例程) .
我想到将每个三元组转换成一个数字,然后用 sort()
对这些数字进行排序。如果我的整数介于 0 和 9 之间,我可以将它们转换为十进制。然而,它们更大。如果它们的最大绝对值是M
,我想到了这样将它们转换成(M
+1)元系统: if (a
,b
,c
)的三元组,对应的整数是a*(M+1)^2+b*(M+1)+c
。对这些转换后的整数进行排序会解决问题,还是我在推理中犯了逻辑错误?
谢谢!
PS:我知道 Matlab 中的 sort()
确实有字符串的字典选项,但我的整数没有相同的数字长度。也许用前导零填充它们并将它们连接起来就可以了?
您是否考虑过使用 sortrows
?
应该使您能够直接按字典顺序对 3 列数据进行排序。
我有以下问题:我有一个 N
整数三元组数组(即 N
x3
矩阵),我想在 Matlab 中按字典顺序对其进行排序。为此,我想到了使用Matlab内置的sort
算法,但我想问一下我的想法是否正确,或者是否存在更简单的方法(最好使用Matlab例程) .
我想到将每个三元组转换成一个数字,然后用 sort()
对这些数字进行排序。如果我的整数介于 0 和 9 之间,我可以将它们转换为十进制。然而,它们更大。如果它们的最大绝对值是M
,我想到了这样将它们转换成(M
+1)元系统: if (a
,b
,c
)的三元组,对应的整数是a*(M+1)^2+b*(M+1)+c
。对这些转换后的整数进行排序会解决问题,还是我在推理中犯了逻辑错误?
谢谢!
PS:我知道 Matlab 中的 sort()
确实有字符串的字典选项,但我的整数没有相同的数字长度。也许用前导零填充它们并将它们连接起来就可以了?
您是否考虑过使用 sortrows
?
应该使您能够直接按字典顺序对 3 列数据进行排序。