短版我的问题:FFT算法 - 如何将样本转换为复杂结构?
如何从音频采样的阵列去(如的Int16)通过共同的FFT库,如AForge使用复杂的结构?
我的问题的长版:
我是新来的音频处理,我期待来分析音乐音频(定位节拍,节奏等)。经过几天的阅读,快速傅立叶变换(FFT)算法似乎是朝着正确方向迈出的一步。
得到持续而不必从头开始实现的算法,我已经下载了几个开源库,Exocortex和AForge.net的。
我解码音频到内存缓冲区。在我的16位48kHz音频立体声音轨的每个周期,我得到48000字节或24000个采样。这些目前被复制到一个短阵列(Int16)中。我现在需要将我的数组转换为复杂结构(在AForge的情况下)。这反过来用“真实”和“虚构”双重值初始化。但究竟是什么,以及我如何从我的阵列中走向这两个双重值?另外,在传递之前是否需要分离左/右声道?
不幸的是,我在读的数学公式,只要它不表现为代码可怕。在我到目前为止访问过的几乎所有网站上,快速出现了快速符号和复杂的数学公式以帮助解释算法。结果,我马上迷失在翻译中。相信我,我努力找到了“傻瓜式FFT算法”。 ;)
致主持人的注意事项:即使问题类似,这不是Convert Audio samples from bytes to complex numbers?的重复。
谢谢您的回答。将尝试。出于好奇,为什么我必须将虚数设置为0.它是什么,它为什么在那里? – BlueVoodoo 2012-08-01 16:20:07
这将必须进入所有那些你说你不希望有钻研公式 - 复杂的数学运算是一个相当显著而复杂的话题,其有没有足够的空间,甚至开始在这里解释。如果你真的想知道,找一本教科书或一些复杂的数学;在目前情况下,虽然,我认为“这是它的工作方式”是最好的答案 - 如果你使用其他什么比0,你会得到错误的答案。 – twalberg 2012-08-01 16:34:43
够公平的。它现在似乎工作,所以我会接受这个答案。 – BlueVoodoo 2012-08-01 16:35:11