【问题标题】:Math.Net FFT Bin WidthMath.Net FFT Bin 宽度
【发布时间】:2019-12-25 05:27:56
【问题描述】:

我正在使用 Math.net 计算一些真实世界数据的 FFT。

这按预期工作,但是我的真实世界数据可能有数十万个样本点,导致我的 FFT 中的 bin 宽度非常窄。

有没有什么方法可以用来减少我的 bin 数量,比如 1000 个,同时仍然包括我整个数据集中的频率分量。

下面的代码粗略示例。

Complex[] comp = input_data.Select(x => new Complex(x, 0)).ToArray();

Fourier.Forward(comp);

mag= comp.Select(c => c.Magnitude).Take(comp.Length / 2).ToArray();
freq = Fourier.FrequencyScale(comp.Length, 1000).Take(comp.Length / 2).ToList();

【问题讨论】:

  • bin 宽度取决于采样率和 bin 数量。您只能从这些变量中提供/获取以更改其中任何一个。 // 你可能在信号处理堆栈 (dsp.stackexchange.com) 上有更好的运气。

标签: c# signal-processing math.net


【解决方案1】:

使用多个较短的 FFT(大小适合您所需的分辨率),可选择重叠窗口,然后组合(平均等)跨 FFT 的频谱幅度。见STFTWelch's method

【讨论】:

    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2016-12-30
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多