【问题标题】:C++ library for signal processing用于信号处理的 C++ 库
【发布时间】:2012-04-01 02:49:57
【问题描述】:

我在 matlab 中编写了一个研究项目,其中使用了很多我不想在 C++ 中重新实现的函数,因此我正在寻找库来为我处理这些。我需要的功能是:(按重要性排序)

  1. 希尔伯特变换
  2. 矩阵函数(行列式、逆向、乘法...)
  3. 求多项式的根(对于大于 5 的度数)
  4. FFT
  5. 卷积
  6. 相关性(matlab 中的 xcorr)

【问题讨论】:

  • 您是否尝试过自己寻找这些内容?你发现了什么?
  • 这些都是标准的数字例程,谷歌应该用实现、开源、商业和介于两者之间的一切来压倒你。正如@Li-aung Yip 所问——你发现了什么?
  • Numerical Recipes in C 可能包含您想要的大部分内容...
  • 好吧,我发现 FFTW 可以进行 FFT 和逆 FFT,我找到了一种简单的方法,可以将其用于希尔伯特变换,Armadillo 用于线性代数,GNU Scientific Library 可以做很多事情阳光下的一切。我仍然很想听听其他人使用什么。
  • 考虑在scicomp.stackexchange.com上提问。

标签: c++ matlab math signal-processing


【解决方案1】:

我不知道其中的大部分,但FFTW 是“西方最快的傅立叶变换”。用于fft()的MATLAB实现。

【讨论】:

    【解决方案2】:

    获得 FFT 后,您可以取消除数字 2. 和 3 之外的所有内容。

    支持 fftw 的 PETSc www.mcs.anl.gov/petsc/ 可以满足线性代数要求。

    我不知道您将如何进行根查找。您可能必须自己编写代码(二分法、牛顿法等),但到目前为止,它是列表中最容易实现的。

    【讨论】:

      【解决方案3】:

      我不确定可以使用的库,但如果您已经拥有用 matlab 编写的函数,还有另一种选择。

      如果你编译 matlab functions to a dll 它们可以被 c++ 程序调用。这将使您无需重写即可访问已有的 matlab 函数。

      【讨论】:

        猜你喜欢
        • 2010-12-23
        • 2012-03-25
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 2011-01-29
        相关资源
        最近更新 更多