# Signal processing (scipy.signal)¶

## Convolution¶

 convolve(in1, in2[, mode, method]) Convolve two N-dimensional arrays. correlate(in1, in2[, mode, method]) Cross-correlate two N-dimensional arrays. fftconvolve(in1, in2[, mode]) Convolve two N-dimensional arrays using FFT. convolve2d(in1, in2[, mode, boundary, fillvalue]) Convolve two 2-dimensional arrays. correlate2d(in1, in2[, mode, boundary, …]) Cross-correlate two 2-dimensional arrays. sepfir2d(input, hrow, hcol) Description: choose_conv_method(in1, in2[, mode, measure]) Find the fastest convolution/correlation method.

## B-splines¶

 bspline(x, n) B-spline basis function of order n. cubic(x) A cubic B-spline. quadratic(x) A quadratic B-spline. gauss_spline(x, n) Gaussian approximation to B-spline basis function of order n. cspline1d(signal[, lamb]) Compute cubic spline coefficients for rank-1 array. qspline1d(signal[, lamb]) Compute quadratic spline coefficients for rank-1 array. cspline2d(input {, lambda, precision}) Description: qspline2d(input {, lambda, precision}) Description: cspline1d_eval(cj, newx[, dx, x0]) Evaluate a spline at the new set of points. qspline1d_eval(cj, newx[, dx, x0]) Evaluate a quadratic spline at the new set of points. spline_filter(Iin[, lmbda]) Smoothing spline (cubic) filtering of a rank-2 array.

## Filtering¶

 order_filter(a, domain, rank) Perform an order filter on an N-dimensional array. medfilt(volume[, kernel_size]) Perform a median filter on an N-dimensional array. medfilt2d(input[, kernel_size]) Median filter a 2-dimensional array. wiener(im[, mysize, noise]) Perform a Wiener filter on an N-dimensional array. symiirorder1(input, c0, z1 {, precision}) Implement a smoothing IIR filter with mirror-symmetric boundary conditions using a cascade of first-order sections. symiirorder2(input, r, omega {, precision}) Implement a smoothing IIR filter with mirror-symmetric boundary conditions using a cascade of second-order sections. lfilter(b, a, x[, axis, zi]) Filter data along one-dimension with an IIR or FIR filter. lfiltic(b, a, y[, x]) Construct initial conditions for lfilter given input and output vectors. lfilter_zi(b, a) Construct initial conditions for lfilter for step response steady-state. filtfilt(b, a, x[, axis, padtype, padlen, …]) Apply a digital filter forward and backward to a signal. savgol_filter(x, window_length, polyorder[, …]) Apply a Savitzky-Golay filter to an array. deconvolve(signal, divisor) Deconvolves divisor out of signal using inverse filtering. sosfilt(sos, x[, axis, zi]) Filter data along one dimension using cascaded second-order sections. sosfilt_zi(sos) Construct initial conditions for sosfilt for step response steady-state. sosfiltfilt(sos, x[, axis, padtype, padlen]) A forward-backward digital filter using cascaded second-order sections. hilbert(x[, N, axis]) Compute the analytic signal, using the Hilbert transform. hilbert2(x[, N]) Compute the ‘2-D’ analytic signal of x decimate(x, q[, n, ftype, axis, zero_phase]) Downsample the signal after applying an anti-aliasing filter. detrend(data[, axis, type, bp]) Remove linear trend along axis from data. resample(x, num[, t, axis, window]) Resample x to num samples using Fourier method along the given axis. resample_poly(x, up, down[, axis, window]) Resample x along the given axis using polyphase filtering. upfirdn(h, x[, up, down, axis]) Upsample, FIR filter, and downsample

## Filter design¶

 bilinear(b, a[, fs]) Return a digital filter from an analog one using a bilinear transform. bilinear_zpk(z, p, k, fs) Return a digital IIR filter from an analog one using a bilinear transform. findfreqs(num, den, N[, kind]) Find array of frequencies for computing the response of an analog filter. firls(numtaps, bands, desired[, weight, nyq, fs]) FIR filter design using least-squares error minimization. firwin(numtaps, cutoff[, width, window, …]) FIR filter design using the window method. firwin2(numtaps, freq, gain[, nfreqs, …]) FIR filter design using the window method. freqs(b, a[, worN, plot]) Compute frequency response of analog filter. freqs_zpk(z, p, k[, worN]) Compute frequency response of analog filter. freqz(b[, a, worN, whole, plot]) Compute the frequency response of a digital filter. freqz_zpk(z, p, k[, worN, whole]) Compute the frequency response of a digital filter in ZPK form. sosfreqz(sos[, worN, whole]) Compute the frequency response of a digital filter in SOS format. group_delay(system[, w, whole]) Compute the group delay of a digital filter. iirdesign(wp, ws, gpass, gstop[, analog, …]) Complete IIR digital and analog filter design. iirfilter(N, Wn[, rp, rs, btype, analog, …]) IIR digital and analog filter design given order and critical points. kaiser_atten(numtaps, width) Compute the attenuation of a Kaiser FIR filter. kaiser_beta(a) Compute the Kaiser parameter beta, given the attenuation a. kaiserord(ripple, width) Determine the filter window parameters for the Kaiser window method. minimum_phase(h[, method, n_fft]) Convert a linear-phase FIR filter to minimum phase savgol_coeffs(window_length, polyorder[, …]) Compute the coefficients for a 1-d Savitzky-Golay FIR filter. remez(numtaps, bands, desired[, weight, Hz, …]) Calculate the minimax optimal filter using the Remez exchange algorithm. unique_roots(p[, tol, rtype]) Determine unique roots and their multiplicities from a list of roots. residue(b, a[, tol, rtype]) Compute partial-fraction expansion of b(s) / a(s). residuez(b, a[, tol, rtype]) Compute partial-fraction expansion of b(z) / a(z). invres(r, p, k[, tol, rtype]) Compute b(s) and a(s) from partial fraction expansion. invresz(r, p, k[, tol, rtype]) Compute b(z) and a(z) from partial fraction expansion. BadCoefficients Warning about badly conditioned filter coefficients

Lower-level filter design functions:

 abcd_normalize([A, B, C, D]) Check state-space matrices and ensure they are two-dimensional. band_stop_obj(wp, ind, passb, stopb, gpass, …) Band Stop Objective Function for order minimization. besselap(N[, norm]) Return (z,p,k) for analog prototype of an Nth-order Bessel filter. buttap(N) Return (z,p,k) for analog prototype of Nth-order Butterworth filter. cheb1ap(N, rp) Return (z,p,k) for Nth-order Chebyshev type I analog lowpass filter. cheb2ap(N, rs) Return (z,p,k) for Nth-order Chebyshev type I analog lowpass filter. cmplx_sort(p) Sort roots based on magnitude. ellipap(N, rp, rs) Return (z,p,k) of Nth-order elliptic analog lowpass filter. lp2bp(b, a[, wo, bw]) Transform a lowpass filter prototype to a bandpass filter. lp2bp_zpk(z, p, k[, wo, bw]) Transform a lowpass filter prototype to a bandpass filter. lp2bs(b, a[, wo, bw]) Transform a lowpass filter prototype to a bandstop filter. lp2bs_zpk(z, p, k[, wo, bw]) Transform a lowpass filter prototype to a bandstop filter. lp2hp(b, a[, wo]) Transform a lowpass filter prototype to a highpass filter. lp2hp_zpk(z, p, k[, wo]) Transform a lowpass filter prototype to a highpass filter. lp2lp(b, a[, wo]) Transform a lowpass filter prototype to a different frequency. lp2lp_zpk(z, p, k[, wo]) Transform a lowpass filter prototype to a different frequency. normalize(b, a) Normalize numerator/denominator of a continuous-time transfer function.

## Matlab-style IIR filter design¶

 butter(N, Wn[, btype, analog, output]) Butterworth digital and analog filter design. buttord(wp, ws, gpass, gstop[, analog]) Butterworth filter order selection. cheby1(N, rp, Wn[, btype, analog, output]) Chebyshev type I digital and analog filter design. cheb1ord(wp, ws, gpass, gstop[, analog]) Chebyshev type I filter order selection. cheby2(N, rs, Wn[, btype, analog, output]) Chebyshev type II digital and analog filter design. cheb2ord(wp, ws, gpass, gstop[, analog]) Chebyshev type II filter order selection. ellip(N, rp, rs, Wn[, btype, analog, output]) Elliptic (Cauer) digital and analog filter design. ellipord(wp, ws, gpass, gstop[, analog]) Elliptic (Cauer) filter order selection. bessel(N, Wn[, btype, analog, output, norm]) Bessel/Thomson digital and analog filter design. iirnotch(w0, Q) Design second-order IIR notch digital filter. iirpeak(w0, Q) Design second-order IIR peak (resonant) digital filter.

## Continuous-Time Linear Systems¶

 lti(*system) Continuous-time linear time invariant system base class. StateSpace(*system, **kwargs) Linear Time Invariant system in state-space form. TransferFunction(*system, **kwargs) Linear Time Invariant system class in transfer function form. ZerosPolesGain(*system, **kwargs) Linear Time Invariant system class in zeros, poles, gain form. lsim(system, U, T[, X0, interp]) Simulate output of a continuous-time linear system. lsim2(system[, U, T, X0]) Simulate output of a continuous-time linear system, by using the ODE solver scipy.integrate.odeint. impulse(system[, X0, T, N]) Impulse response of continuous-time system. impulse2(system[, X0, T, N]) Impulse response of a single-input, continuous-time linear system. step(system[, X0, T, N]) Step response of continuous-time system. step2(system[, X0, T, N]) Step response of continuous-time system. freqresp(system[, w, n]) Calculate the frequency response of a continuous-time system. bode(system[, w, n]) Calculate Bode magnitude and phase data of a continuous-time system.

## Discrete-Time Linear Systems¶

 dlti(*system, **kwargs) Discrete-time linear time invariant system base class. StateSpace(*system, **kwargs) Linear Time Invariant system in state-space form. TransferFunction(*system, **kwargs) Linear Time Invariant system class in transfer function form. ZerosPolesGain(*system, **kwargs) Linear Time Invariant system class in zeros, poles, gain form. dlsim(system, u[, t, x0]) Simulate output of a discrete-time linear system. dimpulse(system[, x0, t, n]) Impulse response of discrete-time system. dstep(system[, x0, t, n]) Step response of discrete-time system. dfreqresp(system[, w, n, whole]) Calculate the frequency response of a discrete-time system. dbode(system[, w, n]) Calculate Bode magnitude and phase data of a discrete-time system.

## LTI Representations¶

 tf2zpk(b, a) Return zero, pole, gain (z, p, k) representation from a numerator, denominator representation of a linear filter. tf2sos(b, a[, pairing]) Return second-order sections from transfer function representation tf2ss(num, den) Transfer function to state-space representation. zpk2tf(z, p, k) Return polynomial transfer function representation from zeros and poles zpk2sos(z, p, k[, pairing]) Return second-order sections from zeros, poles, and gain of a system zpk2ss(z, p, k) Zero-pole-gain representation to state-space representation ss2tf(A, B, C, D[, input]) State-space to transfer function. ss2zpk(A, B, C, D[, input]) State-space representation to zero-pole-gain representation. sos2zpk(sos) Return zeros, poles, and gain of a series of second-order sections sos2tf(sos) Return a single transfer function from a series of second-order sections cont2discrete(system, dt[, method, alpha]) Transform a continuous to a discrete state-space system. place_poles(A, B, poles[, method, rtol, maxiter]) Compute K such that eigenvalues (A - dot(B, K))=poles.

## Waveforms¶

 chirp(t, f0, t1, f1[, method, phi, vertex_zero]) Frequency-swept cosine generator. gausspulse(t[, fc, bw, bwr, tpr, retquad, …]) Return a Gaussian modulated sinusoid: max_len_seq(nbits[, state, length, taps]) Maximum length sequence (MLS) generator. sawtooth(t[, width]) Return a periodic sawtooth or triangle waveform. square(t[, duty]) Return a periodic square-wave waveform. sweep_poly(t, poly[, phi]) Frequency-swept cosine generator, with a time-dependent frequency. unit_impulse(shape[, idx, dtype]) Unit impulse signal (discrete delta function) or unit basis vector.

## Window functions¶

Most window functions are available in the scipy.signal.windows namespace, but we list them here for convenience:

 get_window(window, Nx[, fftbins]) Return a window. windows.barthann(M[, sym]) Return a modified Bartlett-Hann window. windows.bartlett(M[, sym]) Return a Bartlett window. windows.blackman(M[, sym]) Return a Blackman window. windows.blackmanharris(M[, sym]) Return a minimum 4-term Blackman-Harris window. windows.bohman(M[, sym]) Return a Bohman window. windows.boxcar(M[, sym]) Return a boxcar or rectangular window. windows.chebwin(M, at[, sym]) Return a Dolph-Chebyshev window. windows.cosine(M[, sym]) Return a window with a simple cosine shape. windows.dpss(M, NW[, Kmax, sym, norm, …]) Compute the Discrete Prolate Spheroidal Sequences (DPSS). windows.exponential(M[, center, tau, sym]) Return an exponential (or Poisson) window. windows.flattop(M[, sym]) Return a flat top window. windows.gaussian(M, std[, sym]) Return a Gaussian window. windows.general_cosine(M, a[, sym]) Generic weighted sum of cosine terms window windows.general_gaussian(M, p, sig[, sym]) Return a window with a generalized Gaussian shape. windows.general_hamming(M, alpha[, sym]) Return a generalized Hamming window. windows.hamming(M[, sym]) Return a Hamming window. windows.hann(M[, sym]) Return a Hann window. windows.hanning(*args, **kwds) hanning is deprecated, use scipy.signal.windows.hann instead! windows.kaiser(M, beta[, sym]) Return a Kaiser window. windows.nuttall(M[, sym]) Return a minimum 4-term Blackman-Harris window according to Nuttall. windows.parzen(M[, sym]) Return a Parzen window. windows.slepian(M, width[, sym]) Return a digital Slepian (DPSS) window. windows.triang(M[, sym]) Return a triangular window. windows.tukey(M[, alpha, sym]) Return a Tukey window, also known as a tapered cosine window.

## Wavelets¶

 cascade(hk[, J]) Return (x, phi, psi) at dyadic points K/2**J from filter coefficients. daub(p) The coefficients for the FIR low-pass filter producing Daubechies wavelets. morlet(M[, w, s, complete]) Complex Morlet wavelet. qmf(hk) Return high-pass qmf filter from low-pass ricker(points, a) Return a Ricker wavelet, also known as the “Mexican hat wavelet”. cwt(data, wavelet, widths) Continuous wavelet transform.

## Peak finding¶

 argrelmin(data[, axis, order, mode]) Calculate the relative minima of data. argrelmax(data[, axis, order, mode]) Calculate the relative maxima of data. argrelextrema(data, comparator[, axis, …]) Calculate the relative extrema of data. find_peaks(x[, height, threshold, distance, …]) Find peaks inside a signal based on peak properties. find_peaks_cwt(vector, widths[, wavelet, …]) Find peaks in a 1-D array with wavelet transformation. peak_prominences(x, peaks[, wlen]) Calculate the prominence of each peak in a signal. peak_widths(x, peaks[, rel_height, …]) Calculate the width of each peak in a signal.

## Spectral Analysis¶

 periodogram(x[, fs, window, nfft, detrend, …]) Estimate power spectral density using a periodogram. welch(x[, fs, window, nperseg, noverlap, …]) Estimate power spectral density using Welch’s method. csd(x, y[, fs, window, nperseg, noverlap, …]) Estimate the cross power spectral density, Pxy, using Welch’s method. coherence(x, y[, fs, window, nperseg, …]) Estimate the magnitude squared coherence estimate, Cxy, of discrete-time signals X and Y using Welch’s method. spectrogram(x[, fs, window, nperseg, …]) Compute a spectrogram with consecutive Fourier transforms. lombscargle(x, y, freqs) Computes the Lomb-Scargle periodogram. vectorstrength(events, period) Determine the vector strength of the events corresponding to the given period. stft(x[, fs, window, nperseg, noverlap, …]) Compute the Short Time Fourier Transform (STFT). istft(Zxx[, fs, window, nperseg, noverlap, …]) Perform the inverse Short Time Fourier transform (iSTFT). check_COLA(window, nperseg, noverlap[, tol]) Check whether the Constant OverLap Add (COLA) constraint is met