matplotlib.mlab#

为与MATLAB同名命令兼容而编写的数值Python函数。大多数数值Python函数可以在NumPySciPy库中找到。此处保留的代码用于执行频谱计算和核密度估计。

频谱函数#

cohere

相干性(归一化互谱密度)

csd

使用Welch平均周期图的互谱密度

detrend

从数组中移除均值或最佳拟合线

psd

使用Welch平均周期图的功率谱密度

specgram

频谱图(时间段上的频谱)

complex_spectrum

返回信号的复值频谱

magnitude_spectrum

返回信号频谱的幅值

angle_spectrum

返回信号频谱的角度(缠绕相位)

phase_spectrum

返回信号频谱的相位(解缠绕角度)

detrend_mean

从线中移除均值。

detrend_linear

从线中移除最佳拟合线。

detrend_none

返回原始线。

class matplotlib.mlab.GaussianKDE(dataset, bw_method=None)[来源]#

基类: object

使用高斯核的核密度估计的表示。

参数:
dataset类数组

用于估计的数据点。对于单变量数据,这是一个1-D数组;否则,它是一个形状为(维度数,数据点数)的2D数组。

bw_method{'scott', 'silverman'} 或 浮点数 或 可调用对象,可选

用于计算估计器带宽的方法。如果是浮点数,将直接用作 kde.factor。如果是可调用对象,它应将 GaussianKDE 实例作为唯一参数并返回一个浮点数。如果为 None(默认值),则使用 'scott'。

属性:
datasetndarray

传递给构造函数的数据集。

dim整型

维度数量。

num_dp整型

数据点数量。

factor浮点数

带宽因子,从 kde.covariance_factor 获取,协方差矩阵将乘以该因子。

covariancendarray

dataset 的协方差矩阵,按计算出的带宽(kde.factor)进行缩放。

inv_covndarray

covariance 的逆。

方法

kde.evaluate(points)

(ndarray) 在提供的一组点上评估估计的pdf。

kde(points)

(ndarray) 与 kde.evaluate(points) 相同

covariance_factor()[来源]#
evaluate(points)[来源]#

在给定点集上评估估计的pdf。

参数:
points(维度数,点数)-数组

或者,可以传入一个(维度数,)向量并将其视为单个点。

返回:
(点数,)-数组

每个点上的值。

引发:
ValueError如果输入点的维度不同

于KDE的维度。

scotts_factor()[来源]#
silverman_factor()[来源]#
matplotlib.mlab.angle_spectrum(x, Fs=None, window=None, pad_to=None, sides=None)#

计算 x 的频谱角度(缠绕相位谱)。数据被填充到 pad_to 的长度,并对信号应用加窗函数 window

参数:
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时,数据段将被填充到的点数。虽然这不会增加频谱的实际分辨率(可分辨峰值之间的最小距离),但它可以为绘图提供更多点,从而显示更多细节。这对应于对 fft 的调用中的 n 参数。默认值为 None,这意味着将 pad_to 设置为输入信号的长度(即不进行填充)。

返回:
spectrum1-D 数组

频谱的角度(缠绕相位谱)。

freqs一维数组

与 *spectrum* 中元素对应的频率。

另请参阅

psd

返回功率谱密度。

complex_spectrum

返回复值频谱。

magnitude_spectrum

返回 complex_spectrum 的绝对值。

angle_spectrum

返回 complex_spectrum 的角度。

phase_spectrum

返回 complex_spectrum 的相位(解缠绕角度)。

specgram

可以返回信号内部各个段的复频谱。

matplotlib.mlab.cohere(x, y, NFFT=256, Fs=2, detrend=<function detrend_none>, window=<function window_hanning>, noverlap=0, pad_to=None, sides='default', scale_by_freq=None)[来源]#

xy 之间的相干性。相干性是归一化互谱密度

\[C_{xy} = \frac{|P_{xy}|^2}{P_{xx}P_{yy}}\]
参数:
x, y

包含数据的数组或序列

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 不同,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(无重叠)

段之间的重叠点数。

返回:
Cxy一维数组

相干性向量。

freqs一维数组

*Cxy* 中元素的频率。

另请参阅

psd(), csd()

有关用于计算 \(P_{xy}\), \(P_{xx}\)\(P_{yy}\) 的方法的信息。

matplotlib.mlab.complex_spectrum(x, Fs=None, window=None, pad_to=None, sides=None)#

计算 x 的复值频谱。数据被填充到 pad_to 的长度,并对信号应用加窗函数 window

参数:
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时,数据段将被填充到的点数。虽然这不会增加频谱的实际分辨率(可分辨峰值之间的最小距离),但它可以为绘图提供更多点,从而显示更多细节。这对应于对 fft 的调用中的 n 参数。默认值为 None,这意味着将 pad_to 设置为输入信号的长度(即不进行填充)。

返回:
spectrum1-D 数组

复值频谱。

freqs一维数组

与 *spectrum* 中元素对应的频率。

另请参阅

psd

返回功率谱密度。

complex_spectrum

返回复值频谱。

magnitude_spectrum

返回 complex_spectrum 的绝对值。

angle_spectrum

返回 complex_spectrum 的角度。

phase_spectrum

返回 complex_spectrum 的相位(解缠绕角度)。

specgram

可以返回信号内部各个段的复频谱。

matplotlib.mlab.csd(x, y, NFFT=None, Fs=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None)[来源]#

计算互谱密度。

通过Welch平均周期图法计算互谱密度 \(P_{xy}\)。向量 xy 被分成 NFFT 长度的段。每个段都通过函数 detrend 去趋势,并通过函数 window 加窗。noverlap 表示段之间的重叠长度。xy 的直接FFT乘积在每个段上进行平均,以计算 \(P_{xy}\),并进行缩放以校正因加窗引起的功率损失。

如果 len(*x*) < *NFFT* 或 len(*y*) < *NFFT*,它们将被零填充到 *NFFT*。

参数:
x, y一维数组或序列

包含数据的数组或序列

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 不同,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(无重叠)

段之间的重叠点数。

返回:
Pxy一维数组

缩放前互谱 \(P_{xy}\) 的值(实数值)

freqs一维数组

Pxy 中的元素对应的频率

另请参阅

psd

相当于设置 y = x

参考

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

matplotlib.mlab.detrend(x, key=None, axis=None)[来源]#

返回已去除趋势的 x

参数:
x数组或序列

包含数据的数组或序列。

key{'default', 'constant', 'mean', 'linear', 'none'} 或 函数

要使用的去趋势算法。'default'、'mean' 和 'constant' 与 detrend_mean 相同。'linear' 与 detrend_linear 相同。'none' 与 detrend_none 相同。默认值为 'mean'。有关算法的更多详细信息,请参阅相应的函数。也可以是一个执行去趋势操作的函数。

axis整型

执行去趋势操作的轴。

另请参阅

detrend_mean

'mean' 算法的实现。

detrend_linear

'linear' 算法的实现。

detrend_none

'none' 算法的实现。

matplotlib.mlab.detrend_linear(y)[来源]#

返回 x 减去最佳拟合线;'线性'去趋势。

参数:
y0维或1维数组或序列

包含数据的数组或序列

另请参阅

detrend_mean

另一种去趋势算法。

detrend_none

另一种去趋势算法。

detrend

所有去趋势算法的封装器。

matplotlib.mlab.detrend_mean(x, axis=None)[来源]#

返回 x 减去 x 的均值。

参数:
x数组或序列

包含数据的数组或序列 可以是任意维度

axis整型

计算均值的轴。有关此参数的说明,请参阅 numpy.mean

另请参阅

detrend_linear

另一种去趋势算法。

detrend_none

另一种去趋势算法。

detrend

所有去趋势算法的封装器。

matplotlib.mlab.detrend_none(x, axis=None)[来源]#

返回 x:不进行去趋势操作。

参数:
x任意对象

包含数据的对象

axis整型

此参数被忽略。包含此参数是为了与 detrend_mean 兼容

另请参阅

detrend_mean

另一种去趋势算法。

detrend_linear

另一种去趋势算法。

detrend

所有去趋势算法的封装器。

matplotlib.mlab.magnitude_spectrum(x, Fs=None, window=None, pad_to=None, sides=None)#

计算 x 频谱的幅值(绝对值)。数据被填充到 pad_to 的长度,并对信号应用加窗函数 window

参数:
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时,数据段将被填充到的点数。虽然这不会增加频谱的实际分辨率(可分辨峰值之间的最小距离),但它可以为绘图提供更多点,从而显示更多细节。这对应于对 fft 的调用中的 n 参数。默认值为 None,这意味着将 pad_to 设置为输入信号的长度(即不进行填充)。

返回:
spectrum1-D 数组

频谱的幅值(绝对值)。

freqs一维数组

与 *spectrum* 中元素对应的频率。

另请参阅

psd

返回功率谱密度。

complex_spectrum

返回复值频谱。

magnitude_spectrum

返回 complex_spectrum 的绝对值。

angle_spectrum

返回 complex_spectrum 的角度。

phase_spectrum

返回 complex_spectrum 的相位(解缠绕角度)。

specgram

可以返回信号内部各个段的复频谱。

matplotlib.mlab.phase_spectrum(x, Fs=None, window=None, pad_to=None, sides=None)#

计算 x 频谱的相位(解缠绕相位谱)。数据被填充到 pad_to 的长度,并对信号应用加窗函数 window

参数:
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时,数据段将被填充到的点数。虽然这不会增加频谱的实际分辨率(可分辨峰值之间的最小距离),但它可以为绘图提供更多点,从而显示更多细节。这对应于对 fft 的调用中的 n 参数。默认值为 None,这意味着将 pad_to 设置为输入信号的长度(即不进行填充)。

返回:
spectrum1-D 数组

频谱的相位(解缠绕相位谱)。

freqs一维数组

与 *spectrum* 中元素对应的频率。

另请参阅

psd

返回功率谱密度。

complex_spectrum

返回复值频谱。

magnitude_spectrum

返回 complex_spectrum 的绝对值。

angle_spectrum

返回 complex_spectrum 的角度。

phase_spectrum

返回 complex_spectrum 的相位(解缠绕角度)。

specgram

可以返回信号内部各个段的复频谱。

matplotlib.mlab.psd(x, NFFT=None, Fs=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None)[来源]#

计算功率谱密度。

通过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 不同,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(无重叠)

段之间的重叠点数。

返回:
Pxx一维数组

功率谱 \(P_{xx}\) 的值(实数值)

freqs一维数组

Pxx 中的元素对应的频率

另请参阅

specgram

specgram 在默认重叠、不返回段周期图的均值以及返回段的时间方面有所不同。

magnitude_spectrum

返回幅值谱。

csd

返回两个信号之间的谱密度。

参考

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

matplotlib.mlab.specgram(x, NFFT=None, Fs=None, detrend=None, window=None, noverlap=None, pad_to=None, sides=None, scale_by_freq=None, mode=None)[来源]#

计算频谱图。

计算并绘制 x 中数据的频谱图。数据被分成 NFFT 长度的段,并计算每个段的频谱。对每个段应用加窗函数 window,并用 noverlap 指定每个段的重叠量。

参数:
x类数组

1维数组或序列。

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 不同,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整型,默认值: 128

块之间的重叠点数。

mode字符串,默认值:'psd'
要使用的频谱类型
'psd'

返回功率谱密度。

'complex'

返回复值频谱。

'magnitude'

返回幅值谱。

'angle'

返回未解缠的相位谱。

'phase'

返回已解缠的相位谱。

返回:
spectrum类数组

2D数组,列是连续段的周期图。

freqs类数组

1D数组,与 spectrum 中的行对应的频率。

t类数组

1D数组,与段中点对应的时间(即 spectrum 中的列)。

另请参阅

psd

在重叠和返回值方面有所不同。

complex_spectrum

类似,但具有复值频率。

magnitude_spectrum

mode 为 'magnitude' 时,与单个段类似。

angle_spectrum

mode 为 'angle' 时,与单个段类似。

phase_spectrum

mode 为 'phase' 时,与单个段类似。

备注

detrendscale_by_freq 仅在 mode 设置为 'psd' 时适用。

matplotlib.mlab.window_hanning(x)[source]#

返回 x 乘以长度为 len(x) 的 Hanning (或 Hann) 窗口。

另请参阅

window_none

另一种窗口算法。

matplotlib.mlab.window_none(x)[source]#

无窗口函数;只返回 x

另请参阅

window_hanning

另一种窗口算法。