【发布时间】:2014-07-29 21:34:46
【问题描述】:
我在 C# 中尝试了两种不同的 FFT 实现,两者都给了我一些奇怪的结果。为了创建一个最小的测试,我真的归结为我提供给 FFT 的单个归一化(所有参数 = 1)余弦波,但不是在 1Hz 处获得单峰,而是得到一些类似于基数正弦 (SINC) 的函数。现在这有点奇怪,因为 SINC 应该是 FFT 的结果,用于某些平面盒功能。我不知道是什么导致了这种行为,只是为了确保我运行了一个演示,显示了预期的结果here。
我目前正在使用这个implementation of FFT,但与 ExoCortex 1.2 的结果相同。 这是左侧频域 FFT 结果和右侧时域信号的屏幕截图。
【问题讨论】:
-
我猜这是因为当您从整个无限域中获取余弦时,余弦函数的理论傅立叶逆是一个单一的脉冲。您在这里拥有的是余弦函数的一部分,因此逆函数不完全是单个增量。您可能会在这里得到更准确的答案,Signal Processing
-
这个问题似乎跑题了,因为它是关于信号处理的。
-
抱歉,我没有注意到有专门的 SP 站点。SE 网络越来越大了。
-
我认为您在这里看到的只是光谱泄漏(谷歌)。
-
真正的输入信号很少是完美的,你只是不能产生无限的正弦波。你的余弦是有问题的,它在开始时有从 0 到 MAX 的尖峰,在结束时接近 MAX 回到 0。这些快速跃迁会产生大量的三阶谐波,就像方波一样,您可以在频谱中很好地看到它们。当您从 0 开始和结束时,它看起来会更好。需要 window function 来抑制工件。
标签: c# signal-processing fft