Objective-C峰值检测加速框架

时间:2013-01-02 16:59:56

标签: ios algorithm signal-processing fft accelerate-framework

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

从我搜索到的应该使用快速傅里叶变换,但我不知道如何开始使用它,也许我错过了在这种情况下我应该如何使用FFT的一般概念。

在iOS中我们有这个惊人的Accelerate框架,可以帮助我做FFT的东西,但只要我不了解一般的想法它对我来说几乎没用。

任何人都可以通过指向正确的方向来启发我:-)?

非常感谢,新年快乐!

1 个答案:

答案 0 :(得分:2)

因此,每秒生成一个包含30个样本的相机灯值的浮点数组。你想知道每秒的峰值是多少?还是永远?要使用加速度计算向量中的最大值,可以使用vDSP_maxv函数。

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

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

Peak Detection in Time Series

我可能会尝试计算渐变并使用vDSP_nzcros查找0个交叉点。