gpt4 book ai didi

python - Matplotlib 频谱图与 STFT

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:31 27 4
gpt4 key购买 nike

我目前正在使用 matplotlib 计算频谱图。我指定 NFFT=512,但生成的图像高度为 257。然后,我尝试执行 STFT(短时傅里叶变换),它给出了 512 维向量(如预期)。如果我绘制 STFT 的结果,我可以看到 512 个值中的一半只是镜像,所以实际上我只得到 257 个值(如 matplotlib)。有人可以向我解释为什么会这样吗?我一直认为FT是基础变换,为什么会引入这种冗余呢?

谢谢。

最佳答案

冗余是因为您向 FFT 输入严格实数信号,因此 DFT 结果是复共轭(埃尔米特)对称。这种冗余是由于严格实数输入的所有虚部都为零这一事实造成的。但该 DFT 的输出可以包含非零虚部来指示相位。因此,该 DFT 结果必须是共轭对称的,以便结果中的所有虚部将在两个 DFT 结果半部之间抵消(幅度相同,但相位相反),从而表明严格的实输入。此外,基础变换的较低 257 个 bin 将具有 512 度(缩放器)自由度,就像输入一样。但是,频谱图会丢弃所有相位信息,因此它只能显示 257 个唯一值(仅幅度)。

如果您将复数(例如正交)信号输入到 DFT,则可能不会出现 Hermitian 冗余,并且您将拥有 512 长度 DFT 的 1024 个自由度。

如果您想要 512 的图像高度(给定实际输入),请尝试使用 1024 的 FFT 大小。

关于python - Matplotlib 频谱图与 STFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229136/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com