1

我在这里不是数学大师,所以我想问任何熟悉数字信号处理的人,检测实时峰值的最佳方法是什么。我每秒得到大约 30 帧/值,我尝试实现斜率算法来检测峰值,它工作正常,大约 80% 的情况,但它真的不够好:(。

从我搜索的内容来看,应该使用快速傅立叶变换,但我不知道如何开始使用它,也许我错过了在这种情况下应该如何使用 FFT 的一般想法。

在 iOS 中,我们有这个惊人的 Accelerate 框架,它应该可以帮助我做 FFT 的事情,但只要我不明白它对我来说几乎没有用处。

谁能通过将我指向正确的方向来以某种方式启发我:-)?

非常感谢,新年快乐!

4

1 回答 1

2

所以你有一个浮点数组,每秒钟生成一个包含 30 个样本的相机光值。你想知道每秒的峰值是多少?还是曾经?要使用加速计算向量中的最大值,您可以使用该vDSP_maxv函数。

或者您是否尝试检测每秒高于给定阈值的所有峰值?在这种情况下,您可以生成一个包含阈值的向量,该向量的长度与搜索峰值的向量相同。然后您可以使用该vDSP_vmax函数查找高于此阈值的所有值。

如果这还不够好,还有许多更复杂的技术可以在时间序列中找到峰值,这里讨论了一些简单的技术:

时间序列中的峰值检测

我可能会尝试计算梯度并寻找 0 交叉点vDSP_nzcros

于 2013-01-02T17:59:13.183 回答