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一维数组或序列

包含数据的数组或序列。

Fs浮点数,默认值:2

采样频率(每时间单位的采样点数)。用于计算傅里叶频率 *freqs*,单位为每时间单位的周期数。

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

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

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

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

pad_to整数,可选

执行 FFT 时,数据段填充到的点数。这可以与 NFFT 不同,NFFT 指定了所使用的数据点数。虽然这不会增加频谱的实际分辨率(可分辨峰值之间的最小距离),但它可以为图表提供更多点,从而允许显示更多细节。这对应于对 fft 的调用中的 n 参数。默认值为 None,它将 pad_to 设置为等于 NFFT

NFFT整数,默认值:256

FFT 中每个块中使用的数据点数。2 的幂次方效率最高。这**不**应用于零填充,否则结果的缩放将不正确;请改用 *pad_to*。

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

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

scale_by_freq布尔值,默认值:True

结果密度值是否应按缩放频率进行缩放,这将以 1/Hz 为单位给出密度。这允许对返回的频率值进行积分。为了与 MATLAB 兼容,默认值为 True。

mode{'default', 'psd', 'magnitude', 'angle', 'phase'}

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

noverlap整型,默认值: 128

块之间的重叠点数。

scale{'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'。

Fc整数,默认值:0

*x* 的中心频率,它会偏移绘图的 x 范围,以反映信号采集、滤波和下采样到基带时使用的频率范围。

cmap颜色图, 默认值: rcParams["image.cmap"] (默认值: 'viridis')
xextentNone 或 (xmin, xmax)

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

data可索引对象,可选

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

x

vmin, vmax浮点型,可选

vmin 和 vmax 定义了颜色图覆盖的数据范围。默认情况下,颜色图覆盖数据的完整值范围。

**kwargs

附加的关键字参数将传递给 imshow,它用于创建频谱图图像。不支持 origin 关键字参数。

返回:
spectrum二维数组

列是连续段的周期图。

freqs一维数组

spectrum 中行对应的频率。

t一维数组

与段中点(即 spectrum 中的列)对应的时间。

imAxesImage

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

另请参阅

psd

在默认重叠、返回段周期图的平均值、不返回时间以及生成线图而非颜色图方面有所不同。

magnitude_spectrum

一个单一频谱,类似于当 mode 为 'magnitude' 时只有一个段的情况。绘制线图而非颜色图。

angle_spectrum

一个单一频谱,类似于当 mode 为 'angle' 时只有一个段的情况。绘制线图而非颜色图。

phase_spectrum

一个单一频谱,类似于当 mode 为 'phase' 时只有一个段的情况。绘制线图而非颜色图。

备注

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

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

频谱图

频谱图