你在N维数组中使用哪个库?
我在工作中使用blitz ++,我真的不喜欢它的某些方面。 它的某些方面甚至是危险的。之前需要调整大小 使用operator =。一个(Range :: all(),Range :: all())抛出一个(0,0) 矩阵等,线性代数运算 通过clapack完成。
我使用并喜爱了本征。我很欣赏它的“all-in-header”实现, C ++语法糖,以及所有线性代数运算的存在 我需要(矩阵乘法,系统分辨率,cholesky ......)你在用什么?
答案 0 :(得分:7)
boost::array以及boost::MultiArray。还有一个非常好的线性代数包,称为uBLAS
答案 1 :(得分:3)
我在一些项目中也使用了armadillo。来自他们的网站:
Armadillo是一个C ++线性代数库(矩阵数学),旨在实现 速度和轻松之间的良好平衡 使用。整数,浮点数和 也支持复数 作为三角函数和 统计功能。各种矩阵 通过分解提供 可选的与LAPACK和 ATLAS图书馆。
采用延迟评估方法(在编译期间) 将多个操作合二为一 并减少(或消除)对 临时工。这是完成的 通过递归模板和 模板元编程。
如果已将C ++确定为首选语言,则此库非常有用 (由于速度和/或整合 能力),而不是另一个 像Matlab®或Octave这样的语言。它 根据许可证分发 在开源和开源中都很有用 商业背景。
Armadillo主要在NICTA(澳大利亚)开发,具有 来自世界各地的贡献。
答案 2 :(得分:2)
我们已成功使用TNT多年。然而,有足够的问题,我们正在转向内部开发的解决方案。对我们来说两个最大的问题是
如果这些不是问题,那么它们对于许多常见的数组任务来说都相当方便。