矩阵类在C + +(Matrix classes in c++)

2019-08-01 06:47发布

我做了一些线性代数运算,并一直在寻找一些非常轻便,使用简单矩阵类,可以处理不同尺寸:2×2,×1,3X1和1x2的基本。 我相信这样的类可以使用模板来实现,并使用一些专门在某些情况下,出于性能。 任何人都知道任何可供使用的简单实现的? 我不想“臃肿”的实施,为我会在内存受限的嵌入式环境中运行此。

谢谢

Answer 1:

你可以尝试突击++ -或Boost的uBLAS库



Answer 2:

我最近看了各种C ++矩阵库,我的投票去犰狳 。

  • 该库在很大程度上模板和头只。
  • 犰狳还利用模板来实现延迟的评估框架(在编译时解析)以最小化在生成的代码的临时(导致降低的内存使用和增加的性能)。
  • 然而,这些先进的功能,仅仅是一种负担,在嵌入式环境中的编译器,而不是你的实施运行,因为大多数犰狳代码在编译过程中“蒸发”由于基于模板的设计方法。
  • 尽管这一切,它的主要设计目标之一就是易用性 - 的API是在风格上Matlab的语法故意相似(在网站上看到的比较表)。

此外,虽然犰狳可以独立工作,你可能要考虑使用它与LAPACK(BLAS和)可用的实现来提高性能。 一个很好的选择将是例如OpenBLAS (或ATLAS )。 检查犰狳的常见问题 ,它涵盖了一些重要的主题。

在谷歌快速搜索挖出了这个演示表明犰狳已经在嵌入式系统中使用。



Answer 3:

的std :: valarray中是相当轻巧。



Answer 4:

我用Newmat库进行矩阵计算。 它是开源的,易于使用的,虽然我不知道它适合你的轻量级定义(它包括的Visual Studio编译成一个1.8MB的静态库50的源文件)。



Answer 5:

CML矩阵是相当不错的,但对于嵌入式环境中可能不够轻巧。 检查出来呢: http://cmldev.net/?p=418



Answer 6:

Another option, altough may be too late is:

https://launchpad.net/lwmatrix



Answer 7:

我一没能找到足够简单的库,所以我自己写的: http://koti.welho.com/aarpikar/lib/

我觉得应该是能够通过一些简单的行或列设置为零来处理不同的矩阵维(2×2,3×3,3X1等)。 这不会是最最快的方法,因为内部的所有操作将4X4矩阵来完成。 虽然在理论上可能存在那种可以在一个刻度处理4×4的操作处理器。 至少我宁愿​​相信这些处理器的存在是不是去优化这些低级别的矩阵计算。 :)



Answer 8:

如何矩阵只是存储在数组中,喜欢

2x3 matrix = {2,3,val1,val2,...,val6}

这是非常简单的,和加法运算是微不足道的。 但是,你需要编写自己的乘法功能。



文章来源: Matrix classes in c++