【问题标题】:Plotted Spectrum Analysis with FFT/STFT causes artifacts使用 FFT/STFT 绘制频谱分析会导致伪影
【发布时间】:2020-08-30 23:26:10
【问题描述】:

我正在尝试使用 FFT 在其频域中简单地显示 WAV 文件。我尝试通过设置窗口大小等的短时傅里叶变换来完成此操作。

通过在 JFrame 上绘制像素来处理输出(振幅越高,点越亮),我知道这是非常基本的。

我尝试绘制的信号是 10 秒内从 1000Hz 到 10000Hz 的啁啾,采样率为 44100Hz。输出应如下所示:

Chirp-Signal

但是我的输出看起来像这样:

Chirp-Signal with artifacts

这是正确的.. 但正如您所见,存在某种噪音模式。似乎不是随机的。 尝试过的一件事是简单地降低像素的增益,但解决的效果很差:

Chirp-Signal with reduced gain

我使用了来自 here 的 Hann-Filter。

也许我尝试这样做的方式有问题。所以请让我简单解释一下: 我有一个 WAV 文件 - 我删除了标题以获取数据部分。一个 44100Hz 的 10 秒长信号应该给我 441000 个样本。 我以 2048 个样本的大小和一个 256 个样本的窗口步长读取了带有块的数组。 每一步都将通过 Hann 滤波器,然后是 FFT,FFT 被添加到像素阵列中,然后被绘制。

通过屏幕截图可以看出我遗漏了什么明显的东西吗? 我用的 FFT 算法是不是“不够好”?

如果您提供更多信息或者我的解释不够好,请告诉我。提前谢谢你

【问题讨论】:

    标签: java signal-processing fft spectrum


    【解决方案1】:

    您的对比度太高,或者颜色映射范围太宽。尝试重新调整和提高映射到黑色的最低 FFT 幅度,并降低 FFT 输出的增益,以便更少的映射到白色。这将消除数字和量化噪声(四舍五入等),并将一些过曝的白电平带回绘图中的灰度范围。

    【讨论】:

    • 非常感谢 - 它真的很有帮助!
    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 2017-08-23
    • 2013-08-11
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多