matplotlib.pyplot.specgram#
- matplotlib.pyplot.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* 不同。虽然这不会增加频谱的实际分辨率(可分辨峰之间的最小距离),但它可以在图中提供更多点,从而允许显示更多细节。这对应于对
fft
的调用中的 *n* 参数。默认值为 None,这会将 *pad_to* 设置为 *NFFT*。- NFFT整数,默认值: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_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
Colormap
,默认值:rcParams["image.cmap"]
(默认值:'viridis'
) - xextentNone 或 (xmin, xmax)
图像沿 x 轴的范围。默认值将 *xmin* 设置为第一个 bin(*spectrum* 列)的左边界,将 *xmax* 设置为最后一个 bin 的右边界。请注意,对于 *noverlap>0*,bin 的宽度小于段的宽度。
- data可索引对象,可选
如果给定,以下参数也接受字符串
s
,如果s
是data
中的键,则将其解释为data[s]
。x
- vmin, vmax浮点型,可选
vmin 和 vmax 定义了颜色图覆盖的数据范围。默认情况下,颜色图覆盖数据的完整值范围。
- **kwargs
其他关键字参数将传递给生成频谱图图像的
imshow
。不支持 origin 关键字参数。
- 返回:
- spectrum二维数组
列是连续段的周期图。
- freqs一维数组
与 *spectrum* 中行对应的频率。
- t一维数组
与段中点(即 *spectrum* 中的列)对应的时间。
- im
AxesImage
由 imshow 创建的包含频谱图的图像。
另请参阅
psd
默认重叠方式不同;返回段周期图的均值;不返回时间;以及生成折线图而不是颜色图。
magnitude_spectrum
单个频谱,类似于 *mode* 为 'magnitude' 时只有一个段。绘制折线图而不是颜色图。
angle_spectrum
单个频谱,类似于 *mode* 为 'angle' 时只有一个段。绘制折线图而不是颜色图。
phase_spectrum
单个频谱,类似于 *mode* 为 'phase' 时只有一个段。绘制折线图而不是颜色图。
备注
注意
这是 pyplot 包装器,用于
axes.Axes.specgram
。参数 *detrend* 和 *scale_by_freq* 仅当 *mode* 设置为 'psd' 时才适用。