matplotlib.axes.Axes.specgram#

Axes.specgram(x, *, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, cmap=None, xextent=None, pad_to=None, sides=None, scale_by_freq=None, mode=None, scale=None, vmin=None, vmax=None, data=None, **kwargs)[源代码][源代码]#

绘制频谱图。

计算并绘制 x 中的数据的频谱图。数据被分割成 NFFT 长度的段,并且计算每一段的频谱。窗函数 window 应用于每一段,并且每一段的重复量由 noverlap 指定。频谱图以颜色映射(使用 imshow)绘制。

参数:
x一维数组或序列

包含数据的数组或序列。

Fsfloat, 默认值: 2

采样频率(每时间单位的样本数)。它用于计算傅里叶频率,freqs,以每时间单位的周期数表示。

window : 可调用对象或数组, 默认: window_hanning可调用对象或 ndarray,默认:

一个函数或长度为 NFFT 的向量。要创建窗口向量,请参见 window_hanning, window_none, numpy.blackman, numpy.hamming, numpy.bartlett, scipy.signal, scipy.signal.get_window 等。如果将函数作为参数传递,它必须接受一个数据段作为参数,并返回该段的窗口版本。

{'default', 'onesided', 'twosided'}, 可选

返回频谱的哪一侧。'default' 对于实数数据是单侧的,对于复数数据是双侧的。'onesided' 强制返回单侧频谱,而 'twosided' 强制返回双侧频谱。

pad_toint, 可选

执行FFT时数据段填充的点数。这可以与指定使用的数据点数的*NFFT*不同。虽然不会增加频谱的实际分辨率(可分辨峰值之间的最小距离),但这可以在图中提供更多点,从而允许更详细的展示。这对应于调用`~numpy.fft.fft`时的*n*参数。默认值为None,此时*pad_to*等于*NFFT*。

NFFTint, 默认值: 256

用于每个块进行FFT的数据点数。最有效的是2的幂。这*不应该*用于获取零填充,否则结果的缩放将不正确;请改用*pad_to*。

detrend{'none', 'mean', 'linear'} 或可调用对象,默认: 'none'

在fft之前应用于每个片段的函数,旨在去除均值或线性趋势。与MATLAB中*detrend*参数是一个向量不同,在Matplotlib中它是一个函数。mlab`模块定义了.detrend_none`、detrend_mean`和.detrend_linear`,但你也可以使用自定义函数。你也可以使用字符串来选择其中一个函数:'none'调用`.detrend_none`。'mean'调用`.detrend_mean`。'linear'调用`.detrend_linear`。

scale_by_freqbool, 默认: True

生成的密度值是否应按缩放频率进行缩放,这将使密度单位为 1/Hz。这允许对返回的频率值进行积分。默认值为 True,以保持与 MATLAB 的兼容性。

模式{'default', 'psd', 'magnitude', 'angle', 'phase'}

使用哪种频谱。默认是 'psd',即取功率谱密度。'magnitude' 返回幅度谱。'angle' 返回未解包的相位谱。'phase' 返回解包后的相位谱。

noverlapint, 默认值: 128

块之间重叠点的数量。

比例{'default', 'linear', 'dB'}

spec 中值的缩放。'linear' 表示不进行缩放。'dB' 返回以 dB 为单位的值。当 mode 为 'psd' 时,这是 dB 功率(10 * log10)。否则,这是 dB 幅度(20 * log10)。如果 mode 为 'psd' 或 'magnitude','default' 为 'dB',否则为 'linear'。如果 mode 为 'angle' 或 'phase',这必须是 'linear'。

Fcint, 默认值: 0

x 的中心频率,它将图形的 x 轴范围偏移,以反映信号采集后经过滤波和下采样到基带时使用的频率范围。

cmap : Colormap, 默认值: rcParams["image.cmap"] (default: 'viridis')Colormap,默认值:rcParams["image.cmap"](默认值:'viridis')
xextent : None 或 (xmin, xmax)无或 (xmin, xmax)

图像沿 x 轴的范围。默认设置 xmin 为第一个 bin(spectrum 列)的左边界,xmax 为最后一个 bin 的右边界。注意,对于 noverlap>0,bin 的宽度小于段的宽度。

数据可索引对象,可选

如果提供,以下参数也接受一个字符串 s,如果 sdata 中的一个键,则解释为 data[s]

x

vmin, vmax浮点数,可选

vmin 和 vmax 定义了颜色映射覆盖的数据范围。默认情况下,颜色映射覆盖数据的全值范围。

**kwargs

额外的关键字参数会传递给 imshow,用于生成频谱图图像。不支持 origin 关键字参数。

返回:
光谱二维数组

列是连续段的周期图。

freqs一维数组

spectrum 中的行对应的频率。

t一维数组

对应于片段中点的时刻(即,光谱 中的列)。

imAxesImage

由 imshow 创建的包含频谱图的图像。

参见

psd

在默认重叠上有所不同;在返回段周期图的平均值;在不返回时间;以及在生成折线图而不是色图。

magnitude_spectrum

单个光谱,类似于当 mode 为 'magnitude' 时的一个单独段。绘制一条线而不是一个颜色映射。

angle_spectrum

单个光谱,类似于当 mode 为 'angle' 时的一个单段。绘制一条线而不是一个颜色映射。

phase_spectrum

单个光谱,类似于当 mode 为 'phase' 时只有一个段。绘制一条线而不是色图。

注释

参数 detrendscale_by_freq 仅在 mode 设置为 'psd' 时适用。

使用 matplotlib.axes.Axes.specgram 的示例#

频谱图

Spectrogram