matplotlib.pyplot.psd#

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

包含数据的数组或序列

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 不同。虽然不会增加频谱的实际分辨率(可分辨峰值之间的最小距离),但这可以在绘图中提供更多点,从而允许更多细节。这对应于调用 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。

noverlapint, 默认值: 0 (无重叠)

线段之间的重叠点数。

Fcint, 默认值: 0

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

return_linebool, 默认: False

是否在返回值中包含绘制的线对象。

返回:
Pxx一维数组

功率谱 \(P_{xx}\) 在缩放之前的值(实数值)。

freqs一维数组

Pxx 中的元素对应的频率。

lineLine2D

此函数创建的线条。仅当 return_line 为 True 时返回。

其他参数:
数据可索引对象,可选

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

x

**kwargs

关键字参数控制 Line2D 属性:

属性

描述

agg_filter

一个过滤函数,它接收一个 (m, n, 3) 浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 数组和两个从图像左下角开始的偏移量

alpha

标量或无

animated

布尔

抗锯齿 或 aa

布尔

clip_box

BboxBase 或 None

clip_on

布尔

clip_path

补丁或(路径,变换)或无

颜色 或 c

color

dash_capstyle

CapStyle 或 {'butt', 'projecting', 'round'}

dash_joinstyle

JoinStyle 或 {'miter', 'round', 'bevel'}

dashes

浮点数序列(点数中的开/关墨水)或 (None, None)

数据

(2, N) 数组或两个一维数组

drawstyle 或 ds

{'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, 默认: 'default'

figure

FigureSubFigure

fillstyle

{'full', 'left', 'right', 'bottom', 'top', 'none'}

gapcolor

color or None

gid

str

in_layout

布尔

标签

对象

linestyle 或 ls

{'-', '--', '-.', ':', '', (偏移, 开-关-序列), ...}

linewidth 或 lw

float

标记

标记样式字符串, PathMarkerStyle

markeredgecolor 或 mec

color

markeredgewidth 或 mew

float

markerfacecolor 或 mfc

color

markerfacecoloralt 或 mfcalt

color

markersize 或 ms

float

markevery

None 或 int 或 (int, int) 或 slice 或 list[int] 或 float 或 (float, float) 或 list[bool]

鼠标悬停

布尔

path_effects

AbstractPathEffect 的列表

picker

float 或 callable[[Artist, Event], tuple[bool, dict]]

pickradius

float

光栅化

布尔

sketch_params

(scale: float, length: float, randomness: float)

snap

布尔值或无

solid_capstyle

CapStyle 或 {'butt', 'projecting', 'round'}

solid_joinstyle

JoinStyle 或 {'miter', 'round', 'bevel'}

transform

未知

url

str

可见

布尔

xdata

一维数组

ydata

一维数组

zorder

float

参见

specgram

默认的重叠方式不同;不返回段周期图的平均值;返回段的时刻;并绘制色图而不是线条。

magnitude_spectrum

绘制幅度谱。

csd

绘制两个信号之间的频谱密度。

注释

备注

这是 axes.Axes.psdpyplot 包装器

对于绘图,功率以分贝形式绘制为 \(10\log_{10}(P_{xx})\),尽管返回的是 Pxx 本身。

参考文献

Bendat & Piersol -- 随机数据:分析与测量程序,John Wiley & Sons (1986)