使用FFT / STFT进行的频谱分析会导致伪像

问题描述 投票:1回答:1

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

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

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

Chirp-Signal

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

Chirp-Signal with artifacts

这是正确的..但正如您所看到的那样,存在某种噪声模式。它似乎不是随机的。尝试过的一件事就是简单地减少像素的增益,但解决起来很差:

Chirp-Signal with reduced gain

我使用了here中的Hann过滤器。

也许我尝试这样做的方法是错误的。因此,请允许我简要说明一下:我有一个WAV文件-我删除标题只是获得数据部分。一个10s长的信号(44100Hz)应该可以为我提供441000个采样。我以2048个Samples的大小和256个Samples的windowstep读取带有块的数组。每一步都将通过Hann滤波器运行,然后运行FFT,然后将FFT添加到像素数组中,然后进行绘制。

是否有明显的我想念的东西可以通过屏幕截图看到?我使用的FFT算法不够“好”吗?

[请告诉我您的进一步信息或我的解释是否足够。预先谢谢你

java signal-processing fft spectrum
1个回答
0
投票

您的对比度太高,或颜色图范围太宽。尝试重新缩放并提高映射到黑色的最低FFT幅度,并减小FFT输出的增益,以便更少的映射到白色。这将消除数字和量化噪声(四舍五入等),并使某些吹散的白色电平返回到绘图中的灰度范围。

© www.soinside.com 2019 - 2024. All rights reserved.