1 个不稳定版本

0.1.0 2023年8月30日

#427科学

GPL-3.0 许可证

57KB
988

枚举球面成形库

本项目实现了枚举球面成形(ESS)(实现遵循这篇论文)和最优ESS(OESS)算法,以Rust实现。为了方便使用,它还包含子项目pyrsess,该子项目为Rust代码提供了Python绑定。

安装

Rust代码可以使用cargo run进行编译和运行。要使用Python绑定,请参阅pyrsess子文件夹中的README。可以使用cargo build --release创建优化构建。

可以使用cargo doc编译文档。它可以在./target/doc/ess/中找到作为.html文件。入口点是./target/doc/rsess/index.html。默认情况下,文档侧重于rsess的公共接口。如果读者对rsess的内部工作感兴趣,运行cargo doc --document-private-items可能会有更多的见解。

测试

一些测试位于src/tests.rs中,可以使用cargo test运行。

Rust代码概述

  • 文件src/lib.rs
    • 定义了DistributionMatcher特质
      • 修复了 ESSOESS 的常见方法
    • 定义了实现 DistributionMatcher 的结构体 ESSOESS
      • ESS / OESS 算法的用户界面
        • 提供 encode / decode 函数
      • 提供计算振幅分布或平均能量的工具
    • 定义了结构体 ASK
      • 表示振幅键控调制方案
  • 文件 src/trellis.rs
    • 定义了结构体 Trellis
      • 表示 ESS 和 OESS 算法内部使用的交织图
      • 实现(正向和反向)交织图构建
      • 实现 encode / decode 中使用的索引算法
  • 文件 src/iterators.rs
    • 定义了一个迭代器 Amplitudes
      • 迭代给定 ASK 中的振幅值,并附带一些额外约束
    • 定义了一个迭代器 Energies
      • 在交织图中迭代能量级别
  • 文件 src/tests.rs
    • 定义了剩余代码的测试
    • 大致分为三个部分:交织图、ESS 和 OESS

依赖项

~2.5MB
~47K SLoC