尽管Alglib是一个功能丰富的库,但它似乎不支持那里最常见的基本运算符(涉及矩阵/矢量代数)。

用户是否应该重载他们自己需要的任何运算符,或者是否存在使用现有Alglib接口实现乘法,加法,减法,除法(按标量)等性能更友好/建议的方法?

作为related question,我发现提出并接受的解决方案非常不令人满意。通常,当一个库已经存在时,并不会简单地切换到另一个库。我只是发现需要更频繁地执行这些操作,并切换到另一个更麻烦的替代方法不是最好的选择(MTL4使用boost,这是一个负担)。尽管使用表达式模板的想法似乎不错,但是我不知道是否值得在Alglib上实现该技术(也就是说,Alglib是否具有更好的处理简单代数的方法)。

最佳答案

我已经重载了运算符,以便在Alglib中实现这些相对基本的功能。我在Alglib中找不到其他方法可以做到这一点,并且不认为在查看有关该主题的其他问题和答案时可以使用该方法。

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

可以找到常规库的文档:(请参阅“算术运算符”部分)
Eigen Quick Reference Guide

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

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

关于c++ - 使用Alglib的 vector 和矩阵基本运算(加,乘),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18568831/

10-10 21:20