我接触过 MATLAB,并对 MATLAB 中的信号处理和绘图有一些基本的接触......但我对 C/C++ 比 MATLAB 更舒服,因为我一直在使用 OpenCV 进行图像处理......我只是好奇:是是否有任何 DSP 库或平台(如 OpenCV 用于图像处理)用于在 C/C++ 中进行信号处理?
C/C++ 中的 DSP 编程
Octave 是一个多平台开源数学和矩阵工具包。它有一个旨在与 MATLAB 非常相似的命令行解释器,但也有一个C++ API可供使用。由于您指的是与图像处理相比的信号处理,因此我假设您的意思是音频处理,因此您可能需要查看 octave 中的“信号”和“音频”包(提供例如 wavread)。但是请记住,该 API 主要是为 octave CLI 中的内部使用而设计的,并且它被认为是不稳定的(即绑定可能会更改)。此外,由于该库的主要目的不是与之链接,因此至少可以说文档很差。
或者,还有GNU Scientific Library,它主要不是针对信号处理,而是提供复数、矩阵、fft 等。在 Windows 上,您必须使用 Cygwin 自己编译。
你检查过gnuradio吗?它们的块类似于信号处理中使用的块。当我在几年前使用时,已经有大量可用的块,而且还有更多的块在工作中,都是用 C++ 编写的。这些块是使用 python 粘合在一起的,但是一个完整的 C++ 实现正在开发中。
英特尔的集成性能基元(IPP) C++ 库同时具有信号处理和图像处理组件。
我没有使用过它,但听说过关于犰狳(http://arma.sourceforge.net/)的好东西,因为它具有类似 matlab 的功能。还有一些其他的喜欢它,但似乎犰狳经过优化和积极开发。
octave、matlab 或 python/numpy/scipy(有时称为“pylab”)的部分吸引力在于其简单的语法以及带有制表符完成的交互式解释器。这可以大大加快开发速度。
使用 python/numpy,可以使用 python 包装器包装 dll,并在交互式解释器中使用它。我相信这也可以用matlab完成,但我不确定这是否可以用八度音程完成。但是请注意,这在 python/numpy 中可能会稍微复杂一些,尽管我发现在过去,当性能至关重要时,这些好处是值得付出代价的。