3

我想知道此功能是否已通过 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')
4

1 回答 1

1

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

import matplotlib.pyplot as plt

ha = plt.subplot(111)

# Plot your spectrogram here...

ha.set_xscale('log')

编辑这似乎是一个已知问题。有可用的命令可以做到这一点,但不是以任何特别方便的方式(它应该只是specgram函数的标志,或者set_xscale应该set_yscale工作)。但是,有一种方法可以做到这一点:

而不是使用matplotlib.pyplot.specgramuse 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')
于 2012-05-30T08:29:33.377 回答