ger*_*nyl 2 plot fft kissfft cinder
我是FFT概念的初学者,所以我理解的是,如果我输入1024个信号,我将获得513个区间,范围从0hz到22050Hz(在44100Hz采样率的情况下).在Cinder中使用KISS FFT,getBinSize函数返回1024个信号输入的预期513值.我不明白为什么会出现重复的峰值.运行经过20Hz到22000Hz频率(按顺序)的测试音频样本,我看到整个时间有两个峰值.它看起来像:
__ _ __ |__ _ __ _ __ |__ _ __
随着音频播放,峰值似乎彼此相向移动,因此第二个峰值似乎确实是第一个峰值的镜像副本.我经历过的每个例子似乎只是继续绘制所有513个值并且它们似乎没有这个镜像问题.我不确定我错过了什么.
好的,在阅读完之后我找到了解决方案.镜像的原因是因为我对实数使用FFT(实数FFT).众所周知的普通FFT适用于复数.因此,在实际FFT中虚部被"设置"为0,导致在中间周围的镜像(或者从技术上讲,镜像在0和N/2附近).
以下是详细讨论:http://www.edaboard.com/thread144315.html
并阅读本书第238-242页.太棒了,所以买吧.我想在作者的网站上有一个免费的pdf版本:http://www.dspguide.com/