matplotlib.axes.Axes.psd#
- Axes.psd(x, *, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None, return_line=None, data=None, **kwargs)[源]#
绘制功率谱密度。
使用 Welch 平均周期图法计算功率谱密度 \(P_{xx}\)。向量 x 被分成 NFFT 长度的段。每个段通过函数 detrend 去趋势,并通过函数 window 加窗。noverlap 指定了段之间的重叠长度。将每个段 \(i\) 的 \(|\mathrm{fft}(i)|^2\) 进行平均以计算 \(P_{xx}\),并进行缩放以校正因加窗导致的功率损失。
如果 len(x) < NFFT,它将被零填充到 NFFT。
- 参数:
- 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。
- noverlap整数,默认值:0(无重叠)
段之间的重叠点数。
- Fc整数,默认值:0
*x* 的中心频率,它会偏移绘图的 x 范围,以反映信号采集、滤波和下采样到基带时使用的频率范围。
- return_line布尔值,默认值:False
是否在返回值中包含绘制的线条对象。
- 返回:
- Pxx一维数组
缩放前功率谱 \(P_{xx}\) 的值(实数值)。
- freqs一维数组
与 Pxx 中元素对应的频率。
- line
Line2D
此函数创建的线条。仅当 *return_line* 为 True 时返回。
- 其他参数:
- data可索引对象,可选
如果给定,以下参数也接受字符串
s
,如果s
是data
中的一个键,则将其解释为data[s]
。x
- **kwargs
关键字参数控制
Line2D
的属性属性
描述
一个过滤函数,它接受一个 (m, n, 3) 浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 数组以及图像左下角的两个偏移量
浮点数或 None
布尔值
布尔值
BboxBase
或 None布尔值
Patch 或 (Path, Transform) 或 None
CapStyle
或 {'butt', 'projecting', 'round'}JoinStyle
或 {'miter', 'round', 'bevel'}浮点数序列(点中的开/关墨迹)或 (None, None)
(2, N) 数组或两个一维数组
{'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'},默认值: 'default'
{'full', 'left', 'right', 'bottom', 'top', 'none'}
颜色 或 None
str
布尔值
object
{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}
浮点数
标记样式字符串,
Path
或MarkerStyle
浮点数
markersize
或ms
浮点数
None 或 int 或 (int, int) 或 slice 或 list[int] 或 float 或 (float, float) 或 list[bool]
布尔值
浮点数或 callable[[Artist, Event], tuple[bool, dict]]
浮点数
布尔值
(scale: 浮点数, length: 浮点数, randomness: 浮点数)
布尔值或 None
CapStyle
或 {'butt', 'projecting', 'round'}JoinStyle
或 {'miter', 'round', 'bevel'}未知
str
布尔值
一维数组
一维数组
浮点数
另请参阅
specgram
默认重叠方式不同;不返回段周期图的均值;返回段的时间;以及绘制颜色映射而不是线条。
magnitude_spectrum
绘制幅度谱。
csd
绘制两个信号之间的谱密度。
备注
对于绘图,功率以分贝表示为 \(10\log_{10}(P_{xx})\),尽管返回的是 Pxx 本身。
参考
Bendat & Piersol -- 随机数据:分析和测量程序, John Wiley & Sons (1986)