FFT返回SINC而不是明显的峰值

时间:2014-07-29 21:34:47

标签: c# signal-processing fft

我在C#中尝试了两种不同的FFT实现,两者都给了我一些奇怪的结果。为了创建一个最小的测试我真的归结为我提供给FFT的单个归一化(所有params = 1)余弦波,但不是在1Hz获得单峰,我得到一些类似于基数正弦(SINC)的函数。现在这有点奇怪,因为SINC应该是针对某些扁平盒功能的FFT的结果。我想出了什么可能导致这种行为,并确保我运行了一个显示预期结果的演示here

我目前正在使用此implementation of FFT,但ExoCortex 1.2的结果相同。 这里是左侧频域FFT结果和右侧时域信号的屏幕截图。 fft

2 个答案:

答案 0 :(得分:1)

任何有限长度的正弦曲线基本上都是由方框或矩形加窗。如果FFT的长度是正弦波周期的精确整数倍,则只能看到单个峰值,并且正弦波在该FFT的整个长度上未经调制。

你的正弦曲线太短,和/或FFT长度不是整数周期。

答案 1 :(得分:0)

正如Nils Pipenbrinck所指出的那样,光谱泄漏非常严重。使用Blackman–Nuttall建议的窗口函数(Hans Passant)并将我的时域信号转换为正弦波而不是余弦,导致了巨大的改进,我基本上得到了具有最大频率的窄铃。因此,这是最佳解决方案,两位评论者都值得信任。