以下是针对 Clifford 几何代数(Geometric Algebra, GA) 的主流开源库推荐(基于 2026 年最新活跃情况)。我优先考虑易用性、性能、社区支持,以及与压缩感知(多维信号处理、优化)相关的实用性。
1. Python 推荐(最适合快速原型和信号处理)
- clifford(强烈推荐入门/数值计算)
- GitHub: https://github.com/pygae/clifford
- 文档: https://clifford.readthedocs.io/
- 特点:纯数值 GA 库,支持任意签名(Cl(p,q,r)),预置多种常见代数(3DGA、CGA、PGA 等)。运算符重载直观,适合矩阵运算替换、多维信号表示。
- 优势:与 NumPy 兼容性好,适合压缩感知中的 multivector ℓ₁ 优化、Clifford Fourier 变换等。
- 安装:
pip install clifford - 适合:你之前的 CS 应用场景,快速实验 GA 替换矩阵运算。
- galgebra(符号计算)
- GitHub: https://github.com/pygae/galgebra
- 基于 SymPy 的符号 GA 库,适合理论推导、证明 RIP 等 CS 理论在 GA 框架下的形式化。
- 常与 clifford 搭配使用(clifford 数值 + galgebra 符号)。
- kingdon(2025 新兴,高度推荐现代工作流)
- 输入类型无关(支持 NumPy、PyTorch 张量、SymPy 等)。
- 通过符号优化 + JIT 实现高性能,稀疏 multivector 支持好。
- 可直接用 ganja.js 可视化 Jupyter 笔记本。
- 适合:想结合深度学习(PyTorch)做 GA 增强压缩感知的场景。
- tfga:TensorFlow 版本 GA,适合 GPU 加速的大规模信号处理。
2. JavaScript / Web 可视化首选:ganja.js(强烈推荐)
- GitHub: https://github.com/enkimute/ganja.js
- 官网/示例: https://enkimute.github.io/ganja.js/
- 特点:GA 代码生成器,支持生成 JavaScript、C++、C#、Rust、Python 等语言的代码。运算符重载 + 代数常量,稀疏 per-grade 表示,内存高效。
- 最大亮点:强大可视化(2D/3D 交互、动画、ray-marching 显示任意 blade),有著名的 “coffeeshop” 示例集。
- 优势:快速看到几何意义(旋转、投影等),对理解 GA 如何替换 CS 中的线性变换非常直观。支持高维(到 16D+)。
- 安装/使用:浏览器直接用,或通过生成器导出到其他语言。
3. C++ 推荐(性能优先、生产级)
- gal(jeremyong/gal):C++17 表达式编译器,编译时稀疏优化,实时性能强。适合需要速度的 CS 重构实现。
- Garamon:C++ 库生成器,支持任意签名,结合 prefix tree 处理高维。
- Versor / Gaalet:经典 C++ 模板库,性能好,支持 Conformal GA 等。
- GA-FuL(.NET/C#):功能全面,支持代码生成和优化,但主要 .NET 生态。
4. 其他语言 / 专项
- Julia:Grassmann.jl(高维支持强,适合科研)。
- 高维/证明:lean-ga(Lean 定理证明器中的 GA)。
推荐学习路径(针对你的压缩感知需求)
1. 快速上手:先装 clifford + ganja.js 可视化。
- 用 clifford 实现 multivector 版本的 y = A x(用外形态或几何积替换矩阵乘)。
- 用 ganja.js 画出几何解释。
3. 性能/大规模:转向 kingdon(PyTorch 集成)或生成 C++/Rust 代码(ganja.js 或 Garamon)。
4. 资源:
- 综合列表:https://github.com/ga/awesome-geometric-algebra (几乎所有库都在这里)。
- bivector.net 社区(论坛 + 库索引)。