訊號處理 (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])

卷積兩個 2 維陣列。

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

互相關兩個 2 維陣列。

sepfir2d(input, hrow, hcol)

使用 2 維可分離 FIR 濾波器進行卷積。

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

尋找最快的卷積/相關方法。

correlation_lags(in1_len, in2_len[, mode])

計算 1 維互相關的延遲 / 位移索引陣列。

B 樣條#

gauss_spline(x, n)

n 階 B 樣條基底函數的高斯近似。

cspline1d(signal[, lamb])

計算秩為 1 的陣列的立方樣條係數。

qspline1d(signal[, lamb])

計算秩為 1 的陣列的二次樣條係數。

cspline2d(signal[, lamb, precision])

2 維立方(3 階)B 樣條的係數。

qspline2d(signal[, lamb, precision])

2 維二次(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])

對 2 維陣列進行中值濾波。

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)

使用反向濾波將 divisorsignal 中解卷積。

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

使用級聯二階部分沿一維過濾數據。

sosfilt_zi(sos)

為 sosfilt 建構步階響應穩態的初始條件。

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

使用級聯二階部分的前向-後向數位濾波器。

hilbert(x[, N, axis])

基於 FFT 的解析訊號計算。

hilbert2(x[, N])

計算 *x* 的 '2 維' 解析訊號

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)

給定衰減 *a*,計算 Kaiser 參數 *beta*。

kaiserord(ripple, width)

確定 Kaiser 窗函數法的濾波器窗參數。

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

將線性相位 FIR 濾波器轉換為最小相位

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

計算 1 維 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])

檢查狀態空間矩陣並確保它們是 2 維的。

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 type I 類比低通濾波器返回 (z,p,k)。

cheb2ap(N, rs)

為 N 階 Chebyshev type 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 type I 數位和類比濾波器設計。

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

Chebyshev type I 濾波器階數選擇。

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

Chebyshev type II 數位和類比濾波器設計。

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

Chebyshev type 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 維陣列中尋找峰值。

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

僅針對 fn 範圍內的頻率計算 x 的 DFT。

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

建立可呼叫的啁啾 Z 轉換函數。

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

建立可呼叫的縮放 FFT 轉換函數。

czt_points(m[, w, a])

返回計算啁啾 Z 轉換的點。

這些函數比類別更容易使用,但當在多個相同長度的陣列上使用相同的轉換時效率較低,因為它們在每次呼叫時都會重複產生相同的啁啾訊號。在這些情況下,請改用類別來建立可重複使用的函數。