使用Alglib的Vector和Matrix基本操作(加,乘)

时间:2013-09-02 08:36:41

标签: c++ matrix operator-overloading alglib

尽管Alglib是一个功能丰富的库,但它似乎缺乏对最常见的基本运算符的支持(参与矩阵/向量代数)。

用户是否应该重载他们自己需要的任何操作符,或者使用现有的Alglib接口是否有更加性能友好/可取的方法来实现乘法,加法,减法,除法(通过标量)等?

作为related question,我发现建议和接受的解决方案非常不满意。通常,当他们已经有一个好的库时,人们不会简单地切换到另一个库。我刚刚发现需要更频繁地执行这些操作,并且切换到另一个更麻烦的替代方案并不是最好的事情(MTL4使用boost,这是一个相当大的负担)。使用表达式模板的想法似乎很好,但我不知道是否值得在Alglib上实现这种技术(也就是说,如果Alglib有更好的方法来处理简单代数)。

1 个答案:

答案 0 :(得分:1)

为了在Alglib中实现这些相对基本功能,我重载了运算符。我没有在Alglib中找到任何其他方法来做这件事,并且不相信它可以查看有关该主题的其他问题和答案。

我读到不喜欢切换到另一个库,但我建议您快速查看Eigen。对我来说,设置它非常容易,因为我已经将库作为我安装的PointCloudLibrary的一部分。此外,文档非常好,我可以更快地执行所需的操作。

可以找到正常的库文档:(检查算术运算符部分)
Eigen Quick Reference Guide

除了常规文档之外,它还有一个不受支持的部分,文档较少,但有更多算法,如求解器,FFT,多项式,拟合:
Eigen Unsupported

我知道对于我的应用程序,我将删除Alglib的内容并更改为Eigen,因为它更直观,据我所知文档更好。