123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386 |
- """
- =======================================
- Signal processing (:mod:`scipy.signal`)
- =======================================
- Convolution
- ===========
- .. autosummary::
- :toctree: generated/
- convolve -- N-D convolution.
- correlate -- N-D correlation.
- fftconvolve -- N-D convolution using the FFT.
- oaconvolve -- N-D convolution using the overlap-add method.
- convolve2d -- 2-D convolution (more options).
- correlate2d -- 2-D correlation (more options).
- sepfir2d -- Convolve with a 2-D separable FIR filter.
- choose_conv_method -- Chooses faster of FFT and direct convolution methods.
- correlation_lags -- Determines lag indices for 1D cross-correlation.
- B-splines
- =========
- .. autosummary::
- :toctree: generated/
- bspline -- B-spline basis function of order n.
- cubic -- B-spline basis function of order 3.
- quadratic -- B-spline basis function of order 2.
- gauss_spline -- Gaussian approximation to the B-spline basis function.
- cspline1d -- Coefficients for 1-D cubic (3rd order) B-spline.
- qspline1d -- Coefficients for 1-D quadratic (2nd order) B-spline.
- cspline2d -- Coefficients for 2-D cubic (3rd order) B-spline.
- qspline2d -- Coefficients for 2-D quadratic (2nd order) B-spline.
- cspline1d_eval -- Evaluate a cubic spline at the given points.
- qspline1d_eval -- Evaluate a quadratic spline at the given points.
- spline_filter -- Smoothing spline (cubic) filtering of a rank-2 array.
- Filtering
- =========
- .. autosummary::
- :toctree: generated/
- order_filter -- N-D order filter.
- medfilt -- N-D median filter.
- medfilt2d -- 2-D median filter (faster).
- wiener -- N-D Wiener filter.
- symiirorder1 -- 2nd-order IIR filter (cascade of first-order systems).
- symiirorder2 -- 4th-order IIR filter (cascade of second-order systems).
- lfilter -- 1-D FIR and IIR digital linear filtering.
- lfiltic -- Construct initial conditions for `lfilter`.
- lfilter_zi -- Compute an initial state zi for the lfilter function that
- -- corresponds to the steady state of the step response.
- filtfilt -- A forward-backward filter.
- savgol_filter -- Filter a signal using the Savitzky-Golay filter.
- deconvolve -- 1-D deconvolution using lfilter.
- sosfilt -- 1-D IIR digital linear filtering using
- -- a second-order sections filter representation.
- sosfilt_zi -- Compute an initial state zi for the sosfilt function that
- -- corresponds to the steady state of the step response.
- sosfiltfilt -- A forward-backward filter for second-order sections.
- hilbert -- Compute 1-D analytic signal, using the Hilbert transform.
- hilbert2 -- Compute 2-D analytic signal, using the Hilbert transform.
- decimate -- Downsample a signal.
- detrend -- Remove linear and/or constant trends from data.
- resample -- Resample using Fourier method.
- resample_poly -- Resample using polyphase filtering method.
- upfirdn -- Upsample, apply FIR filter, downsample.
- Filter design
- =============
- .. autosummary::
- :toctree: generated/
- bilinear -- Digital filter from an analog filter using
- -- the bilinear transform.
- bilinear_zpk -- Digital filter from an analog filter using
- -- the bilinear transform.
- findfreqs -- Find array of frequencies for computing filter response.
- firls -- FIR filter design using least-squares error minimization.
- firwin -- Windowed FIR filter design, with frequency response
- -- defined as pass and stop bands.
- firwin2 -- Windowed FIR filter design, with arbitrary frequency
- -- response.
- freqs -- Analog filter frequency response from TF coefficients.
- freqs_zpk -- Analog filter frequency response from ZPK coefficients.
- freqz -- Digital filter frequency response from TF coefficients.
- freqz_zpk -- Digital filter frequency response from ZPK coefficients.
- sosfreqz -- Digital filter frequency response for SOS format filter.
- gammatone -- FIR and IIR gammatone filter design.
- group_delay -- Digital filter group delay.
- iirdesign -- IIR filter design given bands and gains.
- iirfilter -- IIR filter design given order and critical frequencies.
- kaiser_atten -- Compute the attenuation of a Kaiser FIR filter, given
- -- the number of taps and the transition width at
- -- discontinuities in the frequency response.
- kaiser_beta -- Compute the Kaiser parameter beta, given the desired
- -- FIR filter attenuation.
- kaiserord -- Design a Kaiser window to limit ripple and width of
- -- transition region.
- minimum_phase -- Convert a linear phase FIR filter to minimum phase.
- savgol_coeffs -- Compute the FIR filter coefficients for a Savitzky-Golay
- -- filter.
- remez -- Optimal FIR filter design.
- unique_roots -- Unique roots and their multiplicities.
- residue -- Partial fraction expansion of b(s) / a(s).
- residuez -- Partial fraction expansion of b(z) / a(z).
- invres -- Inverse partial fraction expansion for analog filter.
- invresz -- Inverse partial fraction expansion for digital filter.
- BadCoefficients -- Warning on badly conditioned filter coefficients.
- Lower-level filter design functions:
- .. autosummary::
- :toctree: generated/
- abcd_normalize -- Check state-space matrices and ensure they are rank-2.
- band_stop_obj -- Band Stop Objective Function for order minimization.
- besselap -- Return (z,p,k) for analog prototype of Bessel filter.
- buttap -- Return (z,p,k) for analog prototype of Butterworth filter.
- cheb1ap -- Return (z,p,k) for type I Chebyshev filter.
- cheb2ap -- Return (z,p,k) for type II Chebyshev filter.
- cmplx_sort -- Sort roots based on magnitude.
- ellipap -- Return (z,p,k) for analog prototype of elliptic filter.
- lp2bp -- Transform a lowpass filter prototype to a bandpass filter.
- lp2bp_zpk -- Transform a lowpass filter prototype to a bandpass filter.
- lp2bs -- Transform a lowpass filter prototype to a bandstop filter.
- lp2bs_zpk -- Transform a lowpass filter prototype to a bandstop filter.
- lp2hp -- Transform a lowpass filter prototype to a highpass filter.
- lp2hp_zpk -- Transform a lowpass filter prototype to a highpass filter.
- lp2lp -- Transform a lowpass filter prototype to a lowpass filter.
- lp2lp_zpk -- Transform a lowpass filter prototype to a lowpass filter.
- normalize -- Normalize polynomial representation of a transfer function.
- Matlab-style IIR filter design
- ==============================
- .. autosummary::
- :toctree: generated/
- butter -- Butterworth
- buttord
- cheby1 -- Chebyshev Type I
- cheb1ord
- cheby2 -- Chebyshev Type II
- cheb2ord
- ellip -- Elliptic (Cauer)
- ellipord
- bessel -- Bessel (no order selection available -- try butterod)
- iirnotch -- Design second-order IIR notch digital filter.
- iirpeak -- Design second-order IIR peak (resonant) digital filter.
- iircomb -- Design IIR comb filter.
- Continuous-time linear systems
- ==============================
- .. autosummary::
- :toctree: generated/
- lti -- Continuous-time linear time invariant system base class.
- StateSpace -- Linear time invariant system in state space form.
- TransferFunction -- Linear time invariant system in transfer function form.
- ZerosPolesGain -- Linear time invariant system in zeros, poles, gain form.
- lsim -- Continuous-time simulation of output to linear system.
- lsim2 -- Like lsim, but `scipy.integrate.odeint` is used.
- impulse -- Impulse response of linear, time-invariant (LTI) system.
- impulse2 -- Like impulse, but `scipy.integrate.odeint` is used.
- step -- Step response of continuous-time LTI system.
- step2 -- Like step, but `scipy.integrate.odeint` is used.
- freqresp -- Frequency response of a continuous-time LTI system.
- bode -- Bode magnitude and phase data (continuous-time LTI).
- Discrete-time linear systems
- ============================
- .. autosummary::
- :toctree: generated/
- dlti -- Discrete-time linear time invariant system base class.
- StateSpace -- Linear time invariant system in state space form.
- TransferFunction -- Linear time invariant system in transfer function form.
- ZerosPolesGain -- Linear time invariant system in zeros, poles, gain form.
- dlsim -- Simulation of output to a discrete-time linear system.
- dimpulse -- Impulse response of a discrete-time LTI system.
- dstep -- Step response of a discrete-time LTI system.
- dfreqresp -- Frequency response of a discrete-time LTI system.
- dbode -- Bode magnitude and phase data (discrete-time LTI).
- LTI representations
- ===================
- .. autosummary::
- :toctree: generated/
- tf2zpk -- Transfer function to zero-pole-gain.
- tf2sos -- Transfer function to second-order sections.
- tf2ss -- Transfer function to state-space.
- zpk2tf -- Zero-pole-gain to transfer function.
- zpk2sos -- Zero-pole-gain to second-order sections.
- zpk2ss -- Zero-pole-gain to state-space.
- ss2tf -- State-pace to transfer function.
- ss2zpk -- State-space to pole-zero-gain.
- sos2zpk -- Second-order sections to zero-pole-gain.
- sos2tf -- Second-order sections to transfer function.
- cont2discrete -- Continuous-time to discrete-time LTI conversion.
- place_poles -- Pole placement.
- Waveforms
- =========
- .. autosummary::
- :toctree: generated/
- chirp -- Frequency swept cosine signal, with several freq functions.
- gausspulse -- Gaussian modulated sinusoid.
- max_len_seq -- Maximum length sequence.
- sawtooth -- Periodic sawtooth.
- square -- Square wave.
- sweep_poly -- Frequency swept cosine signal; freq is arbitrary polynomial.
- unit_impulse -- Discrete unit impulse.
- Window functions
- ================
- For window functions, see the `scipy.signal.windows` namespace.
- In the `scipy.signal` namespace, there is a convenience function to
- obtain these windows by name:
- .. autosummary::
- :toctree: generated/
- get_window -- Return a window of a given length and type.
- Wavelets
- ========
- .. autosummary::
- :toctree: generated/
- cascade -- Compute scaling function and wavelet from coefficients.
- daub -- Return low-pass.
- morlet -- Complex Morlet wavelet.
- qmf -- Return quadrature mirror filter from low-pass.
- ricker -- Return ricker wavelet.
- morlet2 -- Return Morlet wavelet, compatible with cwt.
- cwt -- Perform continuous wavelet transform.
- Peak finding
- ============
- .. autosummary::
- :toctree: generated/
- argrelmin -- Calculate the relative minima of data.
- argrelmax -- Calculate the relative maxima of data.
- argrelextrema -- Calculate the relative extrema of data.
- find_peaks -- Find a subset of peaks inside a signal.
- find_peaks_cwt -- Find peaks in a 1-D array with wavelet transformation.
- peak_prominences -- Calculate the prominence of each peak in a signal.
- peak_widths -- Calculate the width of each peak in a signal.
- Spectral analysis
- =================
- .. autosummary::
- :toctree: generated/
- periodogram -- Compute a (modified) periodogram.
- welch -- Compute a periodogram using Welch's method.
- csd -- Compute the cross spectral density, using Welch's method.
- coherence -- Compute the magnitude squared coherence, using Welch's method.
- spectrogram -- Compute the spectrogram.
- lombscargle -- Computes the Lomb-Scargle periodogram.
- vectorstrength -- Computes the vector strength.
- stft -- Compute the Short Time Fourier Transform.
- istft -- Compute the Inverse Short Time Fourier Transform.
- check_COLA -- Check the COLA constraint for iSTFT reconstruction.
- check_NOLA -- Check the NOLA constraint for iSTFT reconstruction.
- Chirp Z-transform and Zoom FFT
- ============================================
- .. autosummary::
- :toctree: generated/
- czt - Chirp z-transform convenience function
- zoom_fft - Zoom FFT convenience function
- CZT - Chirp z-transform function generator
- ZoomFFT - Zoom FFT function generator
- czt_points - Output the z-plane points sampled by a chirp z-transform
- The functions are simpler to use than the classes, but are less efficient when
- using the same transform on many arrays of the same length, since they
- repeatedly generate the same chirp signal with every call. In these cases,
- use the classes to create a reusable function instead.
- """
- from . import _sigtools, windows
- from ._waveforms import *
- from ._max_len_seq import max_len_seq
- from ._upfirdn import upfirdn
- from ._spline import ( # noqa: F401
- cspline2d,
- qspline2d,
- sepfir2d,
- symiirorder1,
- symiirorder2,
- )
- from ._bsplines import *
- from ._filter_design import *
- from ._fir_filter_design import *
- from ._ltisys import *
- from ._lti_conversion import *
- from ._signaltools import *
- from ._savitzky_golay import savgol_coeffs, savgol_filter
- from ._spectral_py import *
- from ._wavelets import *
- from ._peak_finding import *
- from ._czt import *
- from .windows import get_window # keep this one in signal namespace
- # Deprecated namespaces, to be removed in v2.0.0
- from . import (
- bsplines, filter_design, fir_filter_design, lti_conversion, ltisys,
- spectral, signaltools, waveforms, wavelets, spline
- )
- # deal with * -> windows.* doc-only soft-deprecation
- deprecated_windows = ('boxcar', 'triang', 'parzen', 'bohman', 'blackman',
- 'nuttall', 'blackmanharris', 'flattop', 'bartlett',
- 'barthann', 'hamming', 'kaiser', 'gaussian',
- 'general_gaussian', 'chebwin', 'cosine',
- 'hann', 'exponential', 'tukey')
- def deco(name):
- f = getattr(windows, name)
- # Add deprecation to docstring
- def wrapped(*args, **kwargs):
- return f(*args, **kwargs)
- wrapped.__name__ = name
- wrapped.__module__ = 'scipy.signal'
- if hasattr(f, '__qualname__'):
- wrapped.__qualname__ = f.__qualname__
- if f.__doc__:
- lines = f.__doc__.splitlines()
- for li, line in enumerate(lines):
- if line.strip() == 'Parameters':
- break
- else:
- raise RuntimeError('dev error: badly formatted doc')
- spacing = ' ' * line.find('P')
- lines.insert(li, ('{0}.. warning:: scipy.signal.{1} is deprecated,\n'
- '{0} use scipy.signal.windows.{1} '
- 'instead.\n'.format(spacing, name)))
- wrapped.__doc__ = '\n'.join(lines)
- return wrapped
- for name in deprecated_windows:
- locals()[name] = deco(name)
- del deprecated_windows, name, deco
- __all__ = [s for s in dir() if not s.startswith('_')]
- from scipy._lib._testutils import PytestTester
- test = PytestTester(__name__)
- del PytestTester
|