Plot 为什么我的KISS FFT图显示y轴上镜像的重复峰值?

Plot 为什么我的KISS FFT图显示y轴上镜像的重复峰值?,plot,fft,cinder,kissfft,Plot,Fft,Cinder,Kissfft,我是FFT概念的初学者,所以我的理解是,如果我输入1024个信号,我将得到513个范围从0hz到22050Hz(在采样率为44100Hz的情况下)的BIN。使用Cinder中的KISS FFT,getBinSize函数返回1024个信号输入的预期513值。我不明白的是为什么会出现重复的峰值。运行一个经过20Hz到22000Hz频率(顺序)的测试音频样本,我看到整个时间有两个峰值。它看起来像: 。。。。。 当音频播放时,峰值似乎相互靠近,因此第二个峰值似乎确实是第一个峰值的镜像副本。我所经历的每一

我是FFT概念的初学者,所以我的理解是,如果我输入1024个信号,我将得到513个范围从0hz到22050Hz(在采样率为44100Hz的情况下)的BIN。使用Cinder中的KISS FFT,getBinSize函数返回1024个信号输入的预期513值。我不明白的是为什么会出现重复的峰值。运行一个经过20Hz到22000Hz频率(顺序)的测试音频样本,我看到整个时间有两个峰值。它看起来像:


当音频播放时,峰值似乎相互靠近,因此第二个峰值似乎确实是第一个峰值的镜像副本。我所经历的每一个示例似乎都只是继续绘制所有513个值,它们似乎没有镜像问题。我不确定我遗漏了什么。

您可能正在绘制1024长度FFT的所有1024个FFT结果单元的大小,但上半部分只是下半部分的镜像(因为复杂FFT的纯实输入不能提供足够的自由度,使上半部分唯一)

当围绕中心镜像彼此的图像时,峰值将相互移动


另一种可能是,您的FFT的长度仅为512。

好的,在阅读了这篇文章后,我找到了解决方案。镜像的原因是我对实数使用FFT(实FFT)。众所周知,普通的FFT处理复数。因此,在实FFT中,虚部被“设置”为0,导致围绕中间的镜像(或者从技术上讲,镜像大约为0和N/2)

以下是详细的讨论: (该页面不再可用,但上有副本)


阅读本书第238-242页()。太棒了,买吧。我想在作者的网站上有一个免费的pdf版本:

我已经检查了输入长度和输出长度。我输入1024,得到513。绘制513值会显示一个镜像图像,这就是为什么我不明白发生了什么。请尝试使用交替1和负1的信号,每个信号之间都有零。(即1,0,-1,0,1,0,-1,0,…)对于长度为1024的实际FFT,这将在out[255](第256个频率单元)处给出一个单峰,谢谢标记。我这样做了,它确实给了我一个单一的峰值在第256频率箱,但我不知道这意味着什么。你能帮我理解为什么在一个有1024个信号输入块的音轨中,这个构造的信号看起来是镜像的,而这个构造的信号却没有?