【问题标题】:Lexicographic ordering of triplets of integers in MatlabMatlab中整数三元组的字典排序
【发布时间】:2015-01-15 09:26:36
【问题描述】:

我有以下问题:我有一个 N 整数三元组数组(即 Nx3 矩阵),我想在 Matlab 中按字典顺序对其进行排序。为了做到这一点,我想到了使用Matlab内置的sort算法,但我想问一下我想到的方法是否正确,或者是否存在更简单的方法(最好使用Matlab例程)。

我想把每个三元组转换成一个数字,然后用sort() 对这些数字进行排序。如果我的整数介于 0 和 9 之间,我可以将它们转换为十进制。但是,它们更大。如果它们的最大绝对值是M,我想把它们转换成这样的(M+1)-ary系统: if (a,b,c) 三元组,对应的整数是a*(M+1)^2+b*(M+1)+c。对这些转换后的整数进行排序会解决问题吗,还是我在推理中犯了逻辑错误?

谢谢!

PS:我知道 Matlab 中的 sort() 确实有字符串的字典选项,但我的整数没有相同的数字长度。也许用前导零填充它们并将它们连接起来就可以了?

【问题讨论】:

  • 如果您的整数可能有负数,那么转换为M+1-base 或填充将不起作用。
  • 幸运的是,我的整数都是非负数。我明白为什么填充不起作用,但为什么 (M+1)-base 不适用于负整数?
  • 假设 M 是 9 并且您有“负数”对应于 (0, 0, 9) 与 (0, 1, -1) 的什么?如果我理解正确,两个元组都将转换为 9?
  • 对...我没想到!谢谢!

标签: matlab sorting lexicographic


【解决方案1】:

您是否考虑过使用sortrows
应该使您能够直接按字典顺序对 3 列数据进行排序。

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 2019-07-14
    • 1970-01-01
    • 2013-11-04
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2020-08-02
    相关资源
    最近更新 更多