-1

我正在玩 mathdotnet 并尝试在 FFT 中使用不同的窗口。我对 Hann 窗口特别好奇(尽管我确信这也适用于其他窗口)。当我生成一个宽为 2048 个样本的 Hann 窗口时,我希望得到一组变量逐渐增加到峰值,然后以相同的速率逐渐减小。我得到的是:

    [0] 0                       double
    [1] 2.3553948388377322E-06  double
    [2] 9.421557163713512E-06   double
    [3] 2.11984204002702E-05    double
    [4] 3.768587359187503E-05   double
    [5] 5.8883761400674306E-05  double
    [6] 8.4791884109036708E-05  double
    [7] 0.0001154099976216072   double
    [8] 0.00015073781346730541  double
    [9] 0.0001907749988023788   double
    [10]0.00023552117641323367  double
    ....
    [2039]  0.00015073781346730541  double
    [2040]  0.00011540999762155169  double
    [2041]  8.4791884109036708E-05  double
    [2042]  5.8883761400674306E-05  double
    [2043]  3.768587359187503E-05   double
    [2044]  2.11984204002702E-05    double
    [2045]  9.421557163713512E-06   double
    [2046]  2.3553948388377322E-06  double
    [2047]  0                       double

如您所见,hann 窗口开头和结尾的值似乎完全没有意义,特别是考虑到任何超过 1 的值都没有意义......

生成一个样本少得多的窗口(我尝试了 20 个)工作得很好。

由于我觉得我对 FFT 或库本身的了解不够多,因此在征求您的意见之前发布错误报告感到不舒服。

4

1 回答 1

2

这些数字在我看来是正确的。请注意,这2.3553948388377322 E-06只是写作的科学概念0.0000023553948388377322

请注意,在将其用于 FFT 时,您可能希望使用Window.HannPeriodic而不是Window.Hann,它从 v3.14.0-beta01 开始可用。

于 2016-11-30T05:24:47.357 回答