ini*_*ode 5 flash signal-processing fft actionscript-3
我发现了自动关联 ......
有人能给我一个如何使用它的例子吗?
或者链接,或者甚至是其他脚本语言的示例脚本来控制它?
关心
initcode
听起来你已经明白了如何获得FFT频谱,对吧?
但是,如果你正在寻找基础(绿点),你不能只使用最高峰.它不一定是根本.在我的例子中,实际基波是100 Hz,但最高峰值是300 Hz.
您可以通过许多不同的方式找到真正的基础,并且每种方法在不同的环境中都能更好地发挥作用.comp.dsp上的一个帖子提到"FFT,倒谱,自动/互相关,AMDF/ASDF".
举一个简单的例子,每个红点距离它的邻居都是100赫兹,所以如果你使用峰值寻找算法,然后将每个谐波和下一个谐波之间的距离平均在一起,你会找到基本的,但是如果错过任何峰值,或包括额外峰值,或者信号是对称的并且仅包含奇次谐波(1f,3f,5f),则失败.你需要找到模式然后扔掉异常值然后平均.这可能是一种容易出错的方法.
您还可以对原始波形进行自相关.从概念上讲,这意味着将波形的副本滑过自身,并找到最佳排列的延迟(这将是一个完整的循环).在正常实现中,我们使用FFT来加速它.基本上是自相关
其中*表示复共轭或时间反转. 例如,在Python中:
correlation = fftconvolve(sig, sig[::-1], mode='full')
Run Code Online (Sandbox Code Playgroud)
fftconvolve()的来源相对简单:https://github.com/scipy/scipy/blob/master/scipy/signal/signaltools.py#L133