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_hanningwindow_nonenumpy.blackmannumpy.hammingnumpy.bartlettscipy.signalscipy.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_nonedetrend_meandetrend_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 中元素对应的频率。

lineLine2D

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

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

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

x

**kwargs

关键字参数控制 Line2D 的属性

属性

描述

agg_filter

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

alpha

浮点数或 None

animated

布尔值

antialiasedaa

布尔值

clip_box

BboxBase 或 None

clip_on

布尔值

clip_path

Patch 或 (Path, Transform) 或 None

colorc

color

dash_capstyle

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

dash_joinstyle

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

dashes

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

data

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

drawstyleds

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

figure

FigureSubFigure

fillstyle

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

gapcolor

颜色 或 None

gid

str

in_layout

布尔值

label

object

linestylels

{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}

linewidthlw

浮点数

marker

标记样式字符串,PathMarkerStyle

markeredgecolormec

color

markeredgewidthmew

浮点数

markerfacecolormfc

color

markerfacecoloraltmfcalt

color

markersizems

浮点数

markevery

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

mouseover

布尔值

path_effects

AbstractPathEffect 列表

picker

浮点数或 callable[[Artist, Event], tuple[bool, dict]]

pickradius

浮点数

rasterized

布尔值

sketch_params

(scale: 浮点数, length: 浮点数, randomness: 浮点数)

snap

布尔值或 None

solid_capstyle

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

solid_joinstyle

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

transform

未知

url

str

visible

布尔值

xdata

一维数组

ydata

一维数组

zorder

浮点数

另请参阅

specgram

默认重叠方式不同;不返回段周期图的均值;返回段的时间;以及绘制颜色映射而不是线条。

magnitude_spectrum

绘制幅度谱。

csd

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

备注

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

参考

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

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

功率谱密度 (PSD)

功率谱密度 (PSD)