哪个数值库用于从Matlab移植到C++?

And*_*ndy 14 c++ math matlab numerical numerical-methods

我目前正在使用Matlab中的一些算法进行原型设计,这些算法依赖于矩阵,DSP,统计和图像分析功能.

我可能需要的一些例子:

  • 特征向量
  • 2D和3D卷积
  • FFT
  • 短时傅里叶变换
  • 希尔伯特变换
  • 切比雪夫多项式
  • 低通滤波器
  • 随机多元高斯数
  • k均值

稍后我将需要在C++中实现这些算法.

我还拥有C++中的Numerical Recipes许可证,我喜欢它,因为它有很好的文档记录并且有各种各样的算法.我还找到了一个有助于在MEX中包装NR函数的类:nr3matlab.h.所以使用这个类我应该能够生成包装器,允许我从Matlab调用NR函数.这对我来说非常重要,因此我可以检查从Matlab移植到C++的每一步.然而,C++中的Numerical Recipes有一些重要的缺点:

  • 算法以简单但不一定非常有效的方式实现
  • 没有线程

因此,我正在考虑使用另一个数值库.理想的图书馆应该:

  • 尽可能广泛的范围和功能
  • 有详细记录
  • (有商业支持)
  • 已经制作了Matlab封装
  • 非常强大
  • 效率很高
  • 螺纹
  • (有一个可以打开的GPU实现,而不是带有"开关"的CPU)

你会建议哪个数值库(库)?

提前感谢您的任何答案!

Dir*_*tel 5

您有一个很长的需求列表,并且用一个库涵盖所有这些可能具有挑战性。

对于一般的 Matlab 到 C++ 转换,我强烈推荐Armadillo,它是一个模板化的 C++ 库,重点关注线性代数 --- 并且重点关注如何轻松编写类似 Matlab 的表达式。它的性能非常好,有很好的文档记录并且得到积极维护。您可以从这里开始,尝试填补任务中缺失的部分。


Oli*_*Oli 3

实际上你应该看看openCV

尽管它的首要目标是计算机视觉/图像处理,但该库有很多线性代数工具(几乎是您需要的所有工具)。最初,这个库是由 intel 实现的,非常注重性能。它可以处理多线程,IPP,...语法比通常的 C++ 库更容易使用。

你应该看看这个备忘单。自 2.0 版本以来,语法已更改以模仿 matlab。该库被广泛使用,并且非常活跃(最后一次重大更新是 2011 年 8 月)。