bundles / numpy 2.4.4 / numpy / correlate
_ArrayFunctionDispatcher
numpy:correlate
source: /numpy/_core/numeric.py:725
Signature
def correlate(a, v, mode = valid)Summary
Cross-correlation of two 1-dimensional sequences.
Extended Summary
This function computes the correlation as generally defined in signal processing texts [1]:
with a and v sequences being zero-padded where necessary and denoting complex conjugation.
Parameters
Returns
out: ndarrayDiscrete cross-correlation of
aandv.
Notes
The definition of correlation above is not unique and sometimes correlation may be defined differently. Another common definition is [1]:
which is related to by .
numpy.correlate may perform slowly in large arrays (i.e. n = 1e5) because it does not use the FFT to compute the convolution; in that case, scipy.signal.correlate might be preferable.
Examples
import numpy as np np.correlate([1, 2, 3], [0, 1, 0.5])✓
array([3.5])
np.correlate([1, 2, 3], [0, 1, 0.5], "same") np.correlate([1, 2, 3], [0, 1, 0.5], "full")✗
array([0.5, 2. , 3.5, 3. , 0. ])Using complex sequences:
np.correlate([1+1j, 2, 3-1j], [0, 1, 0.5j], 'full')
✗array([0.5-0.5j, 1. +0.j , 1.5-1.5j, 3. -1.j , 0. +0.j ])Note that you get the time reversed, complex conjugated result (:math:`\overline{c_{-k}}`) when the two input sequences a and v change places:
np.correlate([0, 1, 0.5j], [1+1j, 2, 3-1j], 'full')
✗array([0. +0.j , 3. +1.j , 1.5+1.5j, 1. +0.j , 0.5+0.5j])
See also
- convolve
Discrete, linear convolution of two one-dimensional sequences.
- scipy.signal.correlate
uses FFT which has superior performance on large arrays.
Aliases
numpy.correlate