我在C#中尝试了两种不同的FFT实现,两者都给了我一些奇怪的结果。为了创建一个最小的测试我真的归结为我提供给FFT的单个归一化(所有params = 1)余弦波,但不是在1Hz获得单峰,我得到一些类似于基数正弦(SINC)的函数。现在这有点奇怪,因为SINC应该是针对某些扁平盒功能的FFT的结果。我想出了什么可能导致这种行为,并确保我运行了一个显示预期结果的演示here。
我目前正在使用此implementation of FFT,但ExoCortex 1.2的结果相同。
这里是左侧频域FFT结果和右侧时域信号的屏幕截图。
答案 0 :(得分:1)
任何有限长度的正弦曲线基本上都是由方框或矩形加窗。如果FFT的长度是正弦波周期的精确整数倍,则只能看到单个峰值,并且正弦波在该FFT的整个长度上未经调制。
你的正弦曲线太短,和/或FFT长度不是整数周期。
答案 1 :(得分:0)
正如Nils Pipenbrinck所指出的那样,光谱泄漏非常严重。使用Blackman–Nuttall建议的窗口函数(Hans Passant)并将我的时域信号转换为正弦波而不是余弦,导致了巨大的改进,我基本上得到了具有最大频率的窄铃。因此,这是最佳解决方案,两位评论者都值得信任。