【发布时间】:2020-08-30 23:26:10
【问题描述】:
我正在尝试使用 FFT 在其频域中简单地显示 WAV 文件。我尝试通过设置窗口大小等的短时傅里叶变换来完成此操作。
通过在 JFrame 上绘制像素来处理输出(振幅越高,点越亮),我知道这是非常基本的。
我尝试绘制的信号是 10 秒内从 1000Hz 到 10000Hz 的啁啾,采样率为 44100Hz。输出应如下所示:
但是我的输出看起来像这样:
这是正确的.. 但正如您所见,存在某种噪音模式。似乎不是随机的。 尝试过的一件事是简单地降低像素的增益,但解决的效果很差:
Chirp-Signal with reduced gain
我使用了来自 here 的 Hann-Filter。
也许我尝试这样做的方式有问题。所以请让我简单解释一下: 我有一个 WAV 文件 - 我删除了标题以获取数据部分。一个 44100Hz 的 10 秒长信号应该给我 441000 个样本。 我以 2048 个样本的大小和一个 256 个样本的窗口步长读取了带有块的数组。 每一步都将通过 Hann 滤波器,然后是 FFT,FFT 被添加到像素阵列中,然后被绘制。
通过屏幕截图可以看出我遗漏了什么明显的东西吗? 我用的 FFT 算法是不是“不够好”?
如果您提供更多信息或者我的解释不够好,请告诉我。提前谢谢你
【问题讨论】:
标签: java signal-processing fft spectrum