作为对这个问题的跟进-
有没有一种方法可以计算给定箱中的频谱泄漏量,即给定输入幅度,相邻箱中存在幅度的百分比是多少?
或者给定输入频率和每个 bin 的频率范围,我可以计算每个 bin 中存在的幅度吗?
作为对这个问题的跟进-
有没有一种方法可以计算给定箱中的频谱泄漏量,即给定输入幅度,相邻箱中存在幅度的百分比是多少?
或者给定输入频率和每个 bin 的频率范围,我可以计算每个 bin 中存在的幅度吗?
时域中的窗口化导致与频域中该窗口的变换进行卷积。所以你需要计算这个卷积的结果才能看到效果(有些人称之为“泄漏”)。
您可以对使用的窗口函数(矩形、Von Hann 等)的变换进行采样,以确定窗口纯单频正弦曲线的 FFT 频率响应。对于矩形窗口,FFT 结果中明显“泄漏”的幅度将是归一化 Sinc 函数(更准确地说是一对归一化周期性 Sinc 或 Dirichlet 核)的样本,在与频率 bin 中心偏移的整数偏移处采样,乘以正弦波的幅度。
在我的 dsp 网页上尝试了完整的 Dirichlet 对频率响应结果的方程:http: //www.nicholson.com/rhn/dsp.html#4
但仅使用归一化 Sinc 作为窗口变换方程通常足够接近,除了 DC 或 0 Hz 旁边的 bin 和 bin N/2 旁边的 bin。
对于矩形以外的窗口,使用它们的变换而不是 Sinc 函数,如果需要,上采样和/或插值。
Fred harris在他 1978 年的论文Use of Windows for Harmonic Analysis 中使用了几种测量方法。
下面是表 1 的屏幕截图,比较了这些措施的几个不同窗口。

我认为您问题的最佳解决方案是使用像Hann Function这样的窗口函数,它可以减少频谱泄漏:
未开窗

使用 Hann Window 加窗
但是,这种方法不会让您恢复该频率仓的原始幅度(请注意,在这种情况下,加窗信号损失了大约 40% 的能量)。