我正在尝试使用此FFT在频域中简单显示一个WAV文件。我尝试通过设置窗口大小等的短时傅立叶变换来完成此操作。
输出是通过在JFrame上绘制像素来处理的(振幅越高,点越亮),这是我所知道的基本知识。
我尝试绘制的信号是10秒内从1000Hz到10000Hz的线性调频脉冲,采样率为44100Hz。输出应如下所示:
但是我的输出看起来像这样:
这是正确的..但正如您所看到的那样,存在某种噪声模式。它似乎不是随机的。尝试过的一件事就是简单地减少像素的增益,但解决起来很差:
Chirp-Signal with reduced gain
我使用了here中的Hann过滤器。
也许我尝试这样做的方法是错误的。因此,请允许我简要说明一下:我有一个WAV文件-我删除标题只是获得数据部分。一个10s长的信号(44100Hz)应该可以为我提供441000个采样。我以2048个Samples的大小和256个Samples的windowstep读取带有块的数组。每一步都将通过Hann滤波器运行,然后运行FFT,然后将FFT添加到像素数组中,然后进行绘制。
是否有明显的我想念的东西可以通过屏幕截图看到?我使用的FFT算法不够“好”吗?
[请告诉我您的进一步信息或我的解释是否足够。预先谢谢你
您的对比度太高,或颜色图范围太宽。尝试重新缩放并提高映射到黑色的最低FFT幅度,并减小FFT输出的增益,以便更少的映射到白色。这将消除数字和量化噪声(四舍五入等),并使某些吹散的白色电平返回到绘图中的灰度范围。