信号处理 (scipy.signal)#

卷积#

convolve(in1, in2[, mode, method])

卷积两个 N 维数组。

correlate(in1, in2[, mode, method])

互相关两个 N 维数组。

fftconvolve(in1, in2[, mode, axes])

使用 FFT 卷积两个 N 维数组。

oaconvolve(in1, in2[, mode, axes])

使用重叠相加方法卷积两个 N 维数组。

convolve2d(in1, in2[, mode, boundary, fillvalue])

卷积两个二维数组。

correlate2d(in1, in2[, mode, boundary, ...])

互相关两个二维数组。

sepfir2d(input, hrow, hcol)

使用二维可分离 FIR 滤波器进行卷积。

choose_conv_method(in1, in2[, mode, measure])

查找最快的卷积/相关方法。

correlation_lags(in1_len, in2_len[, mode])

计算一维互相关的滞后/位移索引数组。

B 样条#

gauss_spline(x, n)

n 阶 B 样条基函数的 Gaussian 近似。

cspline1d(signal[, lamb])

计算秩为 1 的数组的立方样条系数。

qspline1d(signal[, lamb])

计算秩为 1 的数组的二次样条系数。

cspline2d(signal[, lamb, precision])

二维三次(三阶)B 样条的系数。

qspline2d(signal[, lamb, precision])

二维二次(二阶)B 样条的系数。

cspline1d_eval(cj, newx[, dx, x0])

在新点集处计算立方样条。

qspline1d_eval(cj, newx[, dx, x0])

在新点集处计算二次样条。

spline_filter(Iin[, lmbda])

平滑样条(三次)滤波秩为 2 的数组。

滤波#

order_filter(a, domain, rank)

对 N 维数组执行顺序滤波。

medfilt(volume[, kernel_size])

对 N 维数组执行中值滤波。

medfilt2d(input[, kernel_size])

中值滤波二维数组。

wiener(im[, mysize, noise])

对 N 维数组执行维纳滤波。

symiirorder1(signal, c0, z1[, precision])

使用一阶级联实现具有镜像对称边界条件的平滑 IIR 滤波器。

symiirorder2(input, r, omega[, precision])

使用二阶级联实现具有镜像对称边界条件的平滑 IIR 滤波器。

lfilter(b, a, x[, axis, zi])

使用 IIR 或 FIR 滤波器沿一维滤波数据。

lfiltic(b, a, y[, x])

为 lfilter 构建给定输入和输出向量的初始条件。

lfilter_zi(b, a)

为 lfilter 构建阶跃响应稳态的初始条件。

filtfilt(b, a, x[, axis, padtype, padlen, ...])

将数字滤波器向前和向后应用于信号。

savgol_filter(x, window_length, polyorder[, ...])

将 Savitzky-Golay 滤波器应用于数组。

deconvolve(signal, divisor)

使用反向滤波从 signal 中解卷积 divisor

sosfilt(sos, x[, axis, zi])

使用级联的二阶段沿一个维度过滤数据。

sosfilt_zi(sos)

为 sosfilt 构建阶跃响应稳态的初始条件。

sosfiltfilt(sos, x[, axis, padtype, padlen])

使用级联的二阶段进行前向-后向数字滤波。

hilbert(x[, N, axis])

基于 FFT 的解析信号计算。

hilbert2(x[, N])

计算 x 的“二维”解析信号

envelope(z[, bp_in, n_out, squared, ...])

计算实值或复值信号的包络。

decimate(x, q[, n, ftype, axis, zero_phase])

应用抗混叠滤波器后对信号进行下采样。

detrend(data[, axis, type, bp, overwrite_data])

从数据中删除沿轴的线性或恒定趋势。

resample(x, num[, t, axis, window, domain])

使用傅里叶方法沿给定轴将 x 重采样到 num 个样本。

resample_poly(x, up, down[, axis, window, ...])

使用多相滤波沿给定轴对 x 进行重采样。

upfirdn(h, x[, up, down, axis, mode, cval])

上采样、FIR 滤波和下采样。

滤波器设计#

bilinear(b, a[, fs])

使用双线性变换从模拟滤波器返回数字 IIR 滤波器。

bilinear_zpk(z, p, k, fs)

使用双线性变换从模拟滤波器返回数字 IIR 滤波器。

findfreqs(num, den, N[, kind])

查找用于计算模拟滤波器响应的频率数组。

firls(numtaps, bands, desired, *[, weight, fs])

使用最小二乘误差最小化的 FIR 滤波器设计。

firwin(numtaps, cutoff, *[, width, window, ...])

使用窗口方法设计 FIR 滤波器。

firwin2(numtaps, freq, gain, *[, nfreqs, ...])

使用窗口方法设计 FIR 滤波器。

freqs(b, a[, worN, plot])

计算模拟滤波器的频率响应。

freqs_zpk(z, p, k[, worN])

计算模拟滤波器的频率响应。

freqz(b[, a, worN, whole, plot, fs, ...])

计算数字滤波器的频率响应。

freqz_sos(sos[, worN, whole, fs])

计算 SOS 格式的数字滤波器的频率响应。

freqz_zpk(z, p, k[, worN, whole, fs])

计算 ZPK 形式的数字滤波器的频率响应。

gammatone(freq, ftype[, order, numtaps, fs])

伽马音滤波器设计。

group_delay(system[, w, whole, fs])

计算数字滤波器的群延迟。

iirdesign(wp, ws, gpass, gstop[, analog, ...])

完整的 IIR 数字和模拟滤波器设计。

iirfilter(N, Wn[, rp, rs, btype, analog, ...])

根据阶数和临界点设计 IIR 数字和模拟滤波器。

kaiser_atten(numtaps, width)

计算 Kaiser FIR 滤波器的衰减。

kaiser_beta(a)

计算 Kaiser 参数 beta,给定衰减 a

kaiserord(ripple, width)

确定 Kaiser 窗口方法的滤波器窗口参数。

minimum_phase(h[, method, n_fft, half])

将线性相位 FIR 滤波器转换为最小相位滤波器。

savgol_coeffs(window_length, polyorder[, ...])

计算一维 Savitzky-Golay FIR 滤波器的系数。

remez(numtaps, bands, desired, *[, weight, ...])

使用 Remez 交换算法计算极小极大最优滤波器。

unique_roots(p[, tol, rtype])

从根列表中确定唯一的根及其重数。

residue(b, a[, tol, rtype])

计算 b(s) / a(s) 的部分分式展开。

residuez(b, a[, tol, rtype])

计算 b(z) / a(z) 的部分分式展开。

invres(r, p, k[, tol, rtype])

从部分分式展开计算 b(s) 和 a(s)。

invresz(r, p, k[, tol, rtype])

从部分分式展开计算 b(z) 和 a(z)。

BadCoefficients

关于条件不佳的滤波器系数的警告

低级滤波器设计函数

abcd_normalize([A, B, C, D])

检查状态空间矩阵并确保它们是二维的。

band_stop_obj(wp, ind, passb, stopb, gpass, ...)

用于最小化阶数的带阻目标函数。

besselap(N[, norm])

返回 N 阶 Bessel 滤波器的模拟原型 (z,p,k)。

buttap(N)

返回 N 阶 Butterworth 滤波器的模拟原型 (z,p,k)。

cheb1ap(N, rp)

返回 N 阶 Chebyshev I 型模拟低通滤波器的 (z,p,k)。

cheb2ap(N, rs)

返回 N 阶 Chebyshev II 型模拟低通滤波器的 (z,p,k)。

ellipap(N, rp, rs)

返回 N 阶椭圆模拟低通滤波器的 (z,p,k)。

lp2bp(b, a[, wo, bw])

将低通滤波器原型转换为带通滤波器。

lp2bp_zpk(z, p, k[, wo, bw])

将低通滤波器原型转换为带通滤波器。

lp2bs(b, a[, wo, bw])

将低通滤波器原型转换为带阻滤波器。

lp2bs_zpk(z, p, k[, wo, bw])

将低通滤波器原型转换为带阻滤波器。

lp2hp(b, a[, wo])

将低通滤波器原型转换为高通滤波器。

lp2hp_zpk(z, p, k[, wo])

将低通滤波器原型转换为高通滤波器。

lp2lp(b, a[, wo])

将低通滤波器原型转换为不同的频率。

lp2lp_zpk(z, p, k[, wo])

将低通滤波器原型转换为不同的频率。

normalize(b, a)

标准化连续时间传递函数的分子/分母。

Matlab 风格的 IIR 滤波器设计#

butter(N, Wn[, btype, analog, output, fs])

Butterworth 数字和模拟滤波器设计。

buttord(wp, ws, gpass, gstop[, analog, fs])

Butterworth 滤波器阶数选择。

cheby1(N, rp, Wn[, btype, analog, output, fs])

Chebyshev I 型数字和模拟滤波器设计。

cheb1ord(wp, ws, gpass, gstop[, analog, fs])

Chebyshev I 型滤波器阶数选择。

cheby2(N, rs, Wn[, btype, analog, output, fs])

Chebyshev II 型数字和模拟滤波器设计。

cheb2ord(wp, ws, gpass, gstop[, analog, fs])

Chebyshev II 型滤波器阶数选择。

ellip(N, rp, rs, Wn[, btype, analog, output, fs])

椭圆 (Cauer) 数字和模拟滤波器设计。

ellipord(wp, ws, gpass, gstop[, analog, fs])

椭圆 (Cauer) 滤波器阶数选择。

bessel(N, Wn[, btype, analog, output, norm, fs])

Bessel/Thomson 数字和模拟滤波器设计。

iirnotch(w0, Q[, fs])

设计二阶 IIR 陷波数字滤波器。

iirpeak(w0, Q[, fs])

设计二阶 IIR 峰值(谐振)数字滤波器。

iircomb(w0, Q[, ftype, fs, pass_zero])

设计 IIR 陷波或峰值数字梳状滤波器。

连续时间线性系统#

lti(*system)

连续时间线性时不变系统基类。

StateSpace(*system, **kwargs)

状态空间形式的线性时不变系统。

TransferFunction(*system, **kwargs)

传递函数形式的线性时不变系统类。

ZerosPolesGain(*system, **kwargs)

零极点增益形式的线性时不变系统类。

lsim(system, U, T[, X0, interp])

模拟连续时间线性系统的输出。

impulse(system[, X0, T, N])

连续时间系统的脉冲响应。

step(system[, X0, T, N])

连续时间系统的阶跃响应。

freqresp(system[, w, n])

计算连续时间系统的频率响应。

bode(system[, w, n])

计算连续时间系统的波德图幅值和相位数据。

离散时间线性系统#

dlti(*system, **kwargs)

离散时间线性时不变系统基类。

StateSpace(*system, **kwargs)

状态空间形式的线性时不变系统。

TransferFunction(*system, **kwargs)

传递函数形式的线性时不变系统类。

ZerosPolesGain(*system, **kwargs)

零极点增益形式的线性时不变系统类。

dlsim(system, u[, t, x0])

模拟离散时间线性系统的输出。

dimpulse(system[, x0, t, n])

离散时间系统的脉冲响应。

dstep(system[, x0, t, n])

离散时间系统的阶跃响应。

dfreqresp(system[, w, n, whole])

计算离散时间系统的频率响应。

dbode(system[, w, n])

计算离散时间系统的波德图幅值和相位数据。

LTI表示#

tf2zpk(b, a)

从线性滤波器的分子、分母表示返回零点、极点、增益(z, p, k)表示。

tf2sos(b, a[, pairing, analog])

从传递函数表示返回二阶节。

tf2ss(num, den)

将传递函数转换为状态空间表示。

zpk2tf(z, p, k)

从零点和极点返回多项式传递函数表示。

zpk2sos(z, p, k[, pairing, analog])

从系统的零点、极点和增益返回二阶节。

zpk2ss(z, p, k)

将零极点增益表示转换为状态空间表示。

ss2tf(A, B, C, D[, input])

将状态空间表示转换为传递函数。

ss2zpk(A, B, C, D[, input])

将状态空间表示转换为零极点增益表示。

sos2zpk(sos)

返回一系列二阶节的零点、极点和增益。

sos2tf(sos)

从一系列二阶节返回单个传递函数。

cont2discrete(system, dt[, method, alpha])

将连续状态空间系统转换为离散状态空间系统。

place_poles(A, B, poles[, method, rtol, maxiter])

计算 K,使得特征值 (A - dot(B, K)) = poles。

波形#

chirp(t, f0, t1, f1[, method, phi, ...])

频率扫描余弦发生器。

gausspulse(t[, fc, bw, bwr, tpr, retquad, ...])

返回高斯调制正弦波。

max_len_seq(nbits[, state, length, taps])

最大长度序列 (MLS) 生成器。

sawtooth(t[, width])

返回周期性锯齿波或三角波。

square(t[, duty])

返回周期性方波波形。

sweep_poly(t, poly[, phi])

频率扫描余弦发生器,具有随时间变化的频率。

unit_impulse(shape[, idx, dtype])

单位脉冲信号(离散狄拉克函数)或单位基向量。

窗函数#

有关窗函数,请参见 scipy.signal.windows 命名空间。

scipy.signal 命名空间中,有一个方便的函数可以通过名称获取这些窗口。

get_window(window, Nx[, fftbins])

返回给定长度和类型的窗口。

峰值查找#

argrelmin(data[, axis, order, mode])

计算 data 的相对最小值。

argrelmax(data[, axis, order, mode])

计算 data 的相对最大值。

argrelextrema(data, comparator[, axis, ...])

计算 data 的相对极值。

find_peaks(x[, height, threshold, distance, ...])

根据峰值属性在信号中查找峰值。

find_peaks_cwt(vector, widths[, wavelet, ...])

使用小波变换在 1-D 数组中查找峰值。

peak_prominences(x, peaks[, wlen])

计算信号中每个峰的显著性。

peak_widths(x, peaks[, rel_height, ...])

计算信号中每个峰的宽度。

频谱分析#

periodogram(x[, fs, window, nfft, detrend, ...])

使用周期图估计功率谱密度。

welch(x[, fs, window, nperseg, noverlap, ...])

使用 Welch 方法估计功率谱密度。

csd(x, y[, fs, window, nperseg, noverlap, ...])

使用 Welch 方法估计互功率谱密度 Pxy。

coherence(x, y[, fs, window, nperseg, ...])

使用 Welch 方法估计离散时间信号 X 和 Y 的幅度平方相干估计 Cxy。

spectrogram(x[, fs, window, nperseg, ...])

使用连续的傅里叶变换计算频谱图(传统函数)。

lombscargle(x, y, freqs[, precenter, ...])

计算广义的 Lomb-Scargle 周期图。

vectorstrength(events, period)

确定与给定周期相对应的事件的向量强度。

ShortTimeFFT(win, hop, fs, *[, fft_mode, ...])

提供参数化的离散短时傅里叶变换 (stft) 及其逆变换 (istft)。

stft(x[, fs, window, nperseg, noverlap, ...])

计算短时傅里叶变换(旧版函数)。

istft(Zxx[, fs, window, nperseg, noverlap, ...])

执行逆短时傅里叶变换(旧版函数)。

check_COLA(window, nperseg, noverlap[, tol])

检查是否满足常数重叠相加 (COLA) 约束。

check_NOLA(window, nperseg, noverlap[, tol])

检查是否满足非零重叠相加 (NOLA) 约束。

线性调频 Z 变换和缩放 FFT#

czt(x[, m, w, a, axis])

计算 Z 平面中螺旋周围的频率响应。

zoom_fft(x, fn[, m, fs, endpoint, axis])

仅计算 xfn 范围内的频率的 DFT。

CZT(n[, m, w, a])

创建一个可调用的线性调频 Z 变换函数。

ZoomFFT(n, fn[, m, fs, endpoint])

创建一个可调用的缩放 FFT 变换函数。

czt_points(m[, w, a])

返回计算线性调频 Z 变换的点。

这些函数比类更容易使用,但当对多个相同长度的数组使用相同的变换时效率较低,因为它们每次调用都会重复生成相同的线性调频信号。在这些情况下,请使用类来创建一个可重用的函数。