Matplotlib谱图与STFT

2021-05-13 15:11:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用matplotlib计算光谱图。我指定NFFT=512,但结果图像的高度为257。得到了短时傅里叶变换。如果我绘制STFT的结果,我可以看到512个值中有一半是镜像的,所以实际上我只得到257个值(就像matplotlib)。有人能解释一下为什么会这样吗?我一直认为金融时报是一个基础转换,为什么它会引入这种冗余?在

谢谢。在

1条回答
网友
1楼 ·

冗余是因为你在FFT中输入了一个严格实数的信号,因此DFT结果是复共轭(Hermitian)对称的。这种冗余是由于严格实输入的所有虚部都为零。但是这种DFT的输出可以包含非零虚部来表示相位。因此,这个DFT结果必须是共轭对称的,以便结果中的所有虚分量将在两个DFT结果的一半之间抵消(相同的量值,但相位相反),这表示严格的实输入。此外,与输入一样,基变换的下部257个单元将具有512个(缩放器)自由度。然而,频谱图会丢弃所有的相位信息,因此它只能显示257个唯一值(仅限幅值)。在

如果你输入一个复信号(例如正交信号)到一个DFT,那么很可能不会有Hermitian冗余,并且512长度的DFT将有1024个自由度。在

如果希望图像高度为512(给定实际输入),请尝试将FFT大小设置为1024。在

相关问题