gpt4 book ai didi

python - 在 matplotlib 中使用 specgram 创建对数频率轴谱图

转载 作者:行者123 更新时间:2023-11-28 18:52:12 35 4
gpt4 key购买 nike

我想知道此功能是否已通过 specgram 内置,但我认为并非如此。如果没有,那么最好的方法是使用 specgram 或通过 matplotlib 来实现。如果对谱图轴进行某种变换可以启用此功能。

例如,对于 specgram 图,以下将不起作用(任何音频信号都可以作为 specgram 的第一个参数传递):

fig = figure(11)
ax = fig.add_subplot(111)
ax.specgram(tidig.train_symbol_list[0].audio,Fs=12000)
ax.set_yscale('log')

最佳答案

您可以使用 Axes.set_xscale 更改轴的缩放比例和 Axes.set_yscale 函数,它们都接受 linearlogsymlog 作为输入。因此,要将绘图更改为具有对数标度的 x 轴,您可以执行以下操作:

import matplotlib.pyplot as plt

ha = plt.subplot(111)

# Plot your spectrogram here...

ha.set_xscale('log')

编辑 这似乎是一个known issue .有可用的命令来执行此操作,但不是以任何特别方便的方式(它应该只是 specgram 函数或 set_xscaleset_yscale 应该工作)。但是,有一种方法可以做到这一点:

不要使用 matplotlib.pyplot.specgram 使用 matplotlib.mlab.specgram .这会计算频谱图,但不会绘制它。然后,您可以使用 matplotlib.pyplot.pcolor 或类似的函数来绘制频谱图。所以尝试这样的事情:

import matplotlib.pyplot as plt
import matplotlib.mlab as mlab

# Set up your data here...

Pxx, freq, t = mlab.specgram(x) # Other options, such as NFFT, may be passed
# to `specgram` here.

ha = plt.subplot(111)
ha.pcolor(t, freq, Pxx)
ha.set_xscale('log')

关于python - 在 matplotlib 中使用 specgram 创建对数频率轴谱图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812189/

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