我在这里不是数学专家,所以我想问一下熟悉数字信号处理的人,检测实时峰值的最佳方法是什么。我得到大约30帧/每秒的值,我试图实现斜率算法来检测峰值,它工作正常,大约80%的情况,但它真的不够好:(。
从我搜索到的应该使用快速傅里叶变换,但我不知道如何开始使用它,也许我错过了在这种情况下我应该如何使用FFT的一般概念。
在iOS中我们有这个惊人的Accelerate框架,可以帮助我做FFT的东西,但只要我不了解一般的想法它对我来说几乎没用。
任何人都可以通过指向正确的方向来启发我:-)?
非常感谢,新年快乐!
答案 0 :(得分:2)
因此,每秒生成一个包含30个样本的相机灯值的浮点数组。你想知道每秒的峰值是多少?还是永远?要使用加速度计算向量中的最大值,可以使用vDSP_maxv
函数。
或者您是否尝试检测每秒超过给定阈值的所有峰值?在这种情况下,您可以生成包含阈值的矢量,该阈值与搜索峰的矢量长度相同。然后,您可以使用vDSP_vmax
函数查找高于此阈值的所有值。
如果这还不够好,有许多更复杂的技术可以在时间序列中找到峰值,这里讨论一些简单的技术:
我可能会尝试计算渐变并使用vDSP_nzcros
查找0个交叉点。