R是否适合数字信号处理

信息处理 过滤器 频谱 小波 时间序列
2022-02-18 02:18:00

在询问有关在 R 中表示大时间序列的问题时,我不鼓励使用 R 进行数字信号处理。我知道 R 是面向统计的。然而,一个信号只是一组测量值。R 也处理时间序列,但它们通常处于不同的时间尺度。然而,例如,在预测价格演变时,需要了解其背后的模型并可能对其进行预测。这与我在物理学中通常想要的非常接近。

在“传统”数字信号处理 (DSP) 中,更常见的是根据信号的频率分量以及信号之间的相互作用或相干性(类似于频率分量幅度的频率相关协方差)来分析信号。

我对 R 感兴趣主要是因为 CRAN 上的一些包具有高级科学例程(不是在 Python 中开发的),例如用于通用 DSP 的信号用于小波变换的waveletsbiwavelet以及用于 bispectrum 的timsac这些软件包应该使这种更“传统”的方法成为可能。但是,我感觉时间序列通常在 R 中以不同的方式进行分析,这从CRAN 的时间序列任务视图中可以明显看出。这些更多的统计模型可能不适合分析非平稳时间序列吗?

所以我问是否有什么东西让 R 对于 DSP 来说比 Python+SciPy(我目前使用最多)或 MATLAB 更糟糕。是否可能是一些底层实现使操作变慢?或者只是在使用 R 时有必要将分析信号的方法更改为更具统计性的方法?与“传统”DSP 方法相比,这种方法是否会受到某种程度的限制?

笔记:

试着在 SO 上问这个问题,但我被指示宁愿在这里问。

我对来源的客观答案感兴趣,而不仅仅是意见。例如

  • 哪些内部表示使它变慢
  • 用于时间序列分析的统计模型的局限性是什么,例如它们如何处理非平稳信号、n 波相互作用等。
2个回答

由于R 的大部分 DSP 功能来自从开源项目 Octave (本身受 MATLAB 影响)移植过来的信号包,因此 R 没有内在限制。

您所了解的是生态系统偏好。我们在大学学习了 MATLAB,在工作中学习了numpy /scipy/sklearn,所以 R 不是首选武器。

也就是说,您可能有兴趣探索一些有趣的“桥梁”项目:https ://stackoverflow.com/questions/5630441/how-do-rpy2-pyrserve-and-pyper-compare 。

还有一个优秀的交互式 python ( iPython ) 项目,现在称为 Jupyter,最近引入了对R 笔记本的支持:https ://www.continuum.io/blog/developer/jupyter-and-conda-r 。因此,工具及其互操作性正在融合!

如果您正在寻找开源,R 是一个不错的选择。您可以使用 R 中的 tuneR 库进行信号处理