📅  最后修改于: 2023-12-03 15:34:22.836000             🧑  作者: Mango
Matplotlib.axes.Axes.specgram()
是Matplotlib中的一个函数,用于绘制信号的谱图(频率随时间变化的图像)。这个函数创建一个谱图对象并在指定的坐标系中添加谱图。
Axes.specgram(x, NFFT=None, Fs=None, Fc=None, detrend=None,
window=None, noverlap=None, cmap=None, xextent=None,
xmin=None, xmax=None, vmin=None, vmax=None, *, data=None,
**kwargs)
参数:
x
: array_like
输入信号。如果是一维数组,会自动转换为二维数组,数组的第一个尺寸必须是时间。NFFT
: int, optional
用于FFT的点数。默认为256。Fs
: scalar, optional
采样频率。默认为2pi,也就是1。Fc
: float, optional
移动一个信号的中心频率。默认为0.0。detrend
: callable, optional
指定信号的消除频率漂移的函数。默认为detrend_none。window
: callable or ndarray, optional
用于加窗处理的窗口函数。默认为hanning。noverlap
: int, optional
窗口重叠的点数。默认为128。cmap
: str or Colormap, optional
谱图颜色图例。xextent
: None or (xmin, xmax), optional
设置x轴坐标范围,仅在没有给定ax时使用才有效。xmin
: float, optional
设置x轴坐标的最小值,仅在没有给定ax时使用才有效。xmax
: float, optional
设置x轴坐标的最大值,仅在没有给定ax时使用才有效。vmin
: float, optional
谱图的最小值。vmax
: float, optional
谱图的最大值。Pxx
: 经过缩放的二维numpy数组,表示频谱密度。freqs
: 一维numpy数组,表示频率值。bins
: 一维numpy数组,表示时间范围。import numpy as np
import matplotlib.pyplot as plt
# 创建例子信号
dt = 0.0005
t = np.arange(0.0, 20.0, dt)
s1 = np.sin(2*np.pi*100*t)
s2 = 2*np.sin(2*np.pi*400*t)
s3 = 0.5*np.sin(2*np.pi*1000*t)
s = s1 + s2 + s3
# 绘制谱图
fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=(8, 5))
fig.subplots_adjust(hspace=0.4)
Pxx, freqs, bins, im = ax1.specgram(s, NFFT=256, Fs=1/dt, cmap='jet')
ax1.set_ylabel('Frequency [Hz]')
ax1.set_xlabel('Time [s]')
plt.show()
Matplotlib.axes.Axes.specgram()
只能在二维坐标系中使用。