c ++中的矩阵类

Al.*_*Al. 3 c++ math matrix linear-algebra

我正在做一些线性代数数学,并且正在寻找一些非常轻巧且易于使用的矩阵类,它可以处理不同的维度:基本上是2x2,2x1,3x1和1x2.我认为这样的类可以用模板实现,并且在某些情况下使用一些特殊化来提高性能.有人知道可以使用的任何简单实现吗?我不想要"臃肿"的实现,因为我将在内存受限的嵌入式环境中运行它.

谢谢

Ali*_*ell 6

你可以试试Blitz ++ - 或者Boost的uBLAS

  • @AI:所有这些库都是纯模板库,因此就内存而言,您只需为您使用的部分付费.警告:我几乎是C++模板的初学者,所以你可能希望检查一下. (3认同)

unt*_*ght 5

我最近查看了各种C++矩阵库,我的投票是Armadillo.

  • 这个库是模板化的,只有标题.
  • Armadillo还利用模板实现延迟评估框架(在编译时解决),以最大限度地减少生成的代码中的临时(导致内存使用减少和性能提高).
  • 但是,这些高级功能只是编译器的负担,而不是嵌入式环境中运行的实现,因为大多数Armadillo代码由于其基于模板的设计方法而在编译期间"蒸发".
  • 尽管如此,其主要设计目标之一是易用性 - API在风格上与Matlab语法有些类似(参见网站上的比较表).

此外,尽管Armadillo可以独立工作,但您可能需要考虑将其与LAPACK(和BLAS)实现一起使用以提高性能.一个很好的选择是OpenBLAS(或ATLAS).查看Armadillo的常见问题解答,它涵盖了一些重要的主题.

谷歌的快速搜索挖掘了这个演示文稿,表明Armadillo已经在嵌入式系统中使用过.