1 个不稳定版本
0.1.0 | 2023年8月30日 |
---|
#427 在 科学
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
特质- 修复了
ESS
和OESS
的常见方法
- 修复了
- 定义了实现
DistributionMatcher
的结构体ESS
和OESS
- ESS / OESS 算法的用户界面
- 提供
encode
/decode
函数
- 提供
- 提供计算振幅分布或平均能量的工具
- ESS / OESS 算法的用户界面
- 定义了结构体
ASK
- 表示振幅键控调制方案
- 定义了
- 文件
src/trellis.rs
- 定义了结构体
Trellis
- 表示 ESS 和 OESS 算法内部使用的交织图
- 实现(正向和反向)交织图构建
- 实现
encode
/decode
中使用的索引算法
- 定义了结构体
- 文件
src/iterators.rs
- 定义了一个迭代器
Amplitudes
- 迭代给定 ASK 中的振幅值,并附带一些额外约束
- 定义了一个迭代器
Energies
- 在交织图中迭代能量级别
- 定义了一个迭代器
- 文件
src/tests.rs
- 定义了剩余代码的测试
- 大致分为三个部分:交织图、ESS 和 OESS
依赖项
~2.5MB
~47K SLoC