Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用FFT/STFT绘制频谱分析会导致伪影_Java_Signal Processing_Fft_Spectrum - Fatal编程技术网

Java 使用FFT/STFT绘制频谱分析会导致伪影

Java 使用FFT/STFT绘制频谱分析会导致伪影,java,signal-processing,fft,spectrum,Java,Signal Processing,Fft,Spectrum,我试图用这个简单地在它的频域中显示一个WAV文件。我尝试通过设置窗口大小的短时傅里叶变换来实现这一点 输出是通过在JFrame上绘制像素来处理的(振幅越高,点越亮),这是我所知道的最基本的 我试图绘制的信号是在10秒内用44100Hz采样器从1000Hz到10000Hz的啁啾。输出应如下所示: 但是,我的输出如下所示: 这是一种权利。。但正如你所看到的,这里有某种噪音模式。这似乎不是随机的。 尝试过的一件事是简单地降低像素的增益,但这很难解决问题: 我用了一个汉恩过滤器 也许我尝试的方式是

我试图用这个简单地在它的频域中显示一个WAV文件。我尝试通过设置窗口大小的短时傅里叶变换来实现这一点

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

我试图绘制的信号是在10秒内用44100Hz采样器从1000Hz到10000Hz的啁啾。输出应如下所示:

但是,我的输出如下所示:

这是一种权利。。但正如你所看到的,这里有某种噪音模式。这似乎不是随机的。 尝试过的一件事是简单地降低像素的增益,但这很难解决问题:

我用了一个汉恩过滤器

也许我尝试的方式是错误的。因此,请让我简单解释一下: 我有一个WAV文件-我删除了头,只是得到数据部分。一个10秒长、频率为44100Hz的信号应该能提供441000个样本。 我读取了2048个样本大小的块和256个样本大小的windowstep数组。 每一步都将经过Hann滤波器,然后是FFT,FFT被添加到像素阵列中,然后被绘制

是否有一些明显的我遗漏的东西可以通过截图看到? 我使用的FFT算法是否“不够好”


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

您的对比度太高,或者颜色贴图范围太宽。尝试重新缩放并提高映射到黑色的最低FFT幅度,并降低FFT输出上的增益,以便较少的FFT幅度映射到白色。这将消除数字和量化噪声(舍入等),并将一些放大到白色的级别恢复到绘图中的灰度范围。

对比度太高,或者颜色贴图范围太宽。尝试重新缩放并提高映射到黑色的最低FFT幅度,并降低FFT输出上的增益,以便较少的FFT幅度映射到白色。这将消除数字和量化噪声(舍入等),并将一些放大到白色的级别恢复到绘图中的灰度范围。

非常感谢-这真的很有帮助!非常感谢-这真的很有帮助!