信号处理 (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 样条基函数的高斯近似。

cspline1d(signal[, lamb])

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

qspline1d(signal[, lamb])

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

cspline2d(input[, lambda, precision])

二维立方 (3 阶) B 样条的系数。

qspline2d(input[, lambda, precision])

二维二次 (2 阶) 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(input, 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])

使用希尔伯特变换计算解析信号。

hilbert2(x[, N])

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

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_zpk(z, p, k[, worN, whole, fs])

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

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

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

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)

给定衰减 a 计算 Kaiser 参数 beta

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 阶巴特沃斯滤波器的模拟原型的 (z,p,k)。

cheb1ap(N, rp)

返回 N 阶第一类切比雪夫模拟低通滤波器的 (z,p,k)。

cheb2ap(N, rs)

返回 N 阶第二类切比雪夫模拟低通滤波器的 (z,p,k)。

cmplx_sort(p)

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])

巴特沃斯数字和模拟滤波器设计。

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

巴特沃斯滤波器阶数选择。

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

第一类切比雪夫数字和模拟滤波器设计。

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

第一类切比雪夫滤波器阶数选择。

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

第二类切比雪夫数字和模拟滤波器设计。

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

第二类切比雪夫滤波器阶数选择。

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])

贝塞尔/汤姆森数字和模拟滤波器设计。

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, vertex_zero])

频率扫描余弦信号发生器。

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])

单位冲激信号(离散 delta 函数)或单位基向量。

窗函数#

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

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

get_window(window, Nx[, fftbins])

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

小波#

cascade(hk[, J])

从滤波器系数返回 (x, phi, psi) 在二进点 K/2**J

daub(p)

生成 Daubechies 小波的 FIR 低通滤波器的系数。

morlet(M[, w, s, complete])

复 Morlet 小波。

qmf(hk)

从低通返回高通 QMF 滤波器。

ricker(points, a)

返回 Ricker 小波,也称为“墨西哥帽小波”。

morlet2(M, s[, w])

复 Morlet 小波,设计用于与 cwt 一起使用。

cwt(data, wavelet, widths[, dtype])

连续小波变换。

峰值查找#

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, ...])

使用小波变换在一维数组中查找峰值。

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)

计算 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) 约束。

Chirp Z 变换和缩放 FFT#

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

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

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

仅对范围 fn 中的频率计算 x 的 DFT。

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

创建一个可调用的 Chirp Z 变换函数。

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

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

czt_points(m[, w, a])

返回计算 Chirp Z 变换的点。

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