Корреляция двух массивов python

Функция np.correlate() в Python — что делает

Python numpy.correlate(v1,v2, mode) выполняет свертку массива v1 с обращением массива v2 и дает результат, обрезанный с использованием одного из трех указанных режимов.

Что такое функция np.correlate() в Python?

Метод numpy.correlate() в Python используется для поиска взаимной перекрестной корреляции между двумя одномерными векторами. Функция np.correlate(), которая вычисляет корреляцию, как обычно определено в тексте с одиночной обработкой, задается как: c_ [k] = sum_n v1[n+k] * conj(v2[n]) с последовательностями v1 и v2, при необходимости дополняется нулями, а conj является сопряженным.

Синтаксис

Параметры

Функция numpy.correlate() принимает не более четырех параметров:

  • v1: array_like, первый одномерный входной массив. Предположим, он имеет форму(M,)
  • v2: array_like, второй одномерный входной массив. Предположим, он имеет форму(N,)
  • mode: . Это необязательный параметр, который имеет три различных режима, которые поясняются ниже:
  1. «valid»: это режим по умолчанию. Режим «действителен» возвращает вывод длины max(M, N) – min(M, N) + 1. Продукт свертки дается только тогда, когда v1 и v2 полностью перекрывают друг друга. Значения вне границы сигнала не влияют.
  2. «same»: возвращает выходные данные длины min(M, N). Пограничные эффекты все еще видны.
  3. «full»: это возвращает свертку в каждой точке перекрытия с выходной формой(M + N-1). В конечных точках свертки векторы v1 и v2 не перекрываются полностью, и могут наблюдаться граничные эффекты.
  • old_behavior: bool, это логический параметр, который может принимать значения true или false.

В случае, если old_behavoiur принимает значение true из числового значения(correlate(v1, v2) == correct(v2, v1), сопряжение не берется для сложных массивов. В противном случае, если old_behavoiur принимает значение false из числового значения, тогда используется обычное определение обработки сигналов.

Читайте также:  График параболы в python

Возвращаемое значение

Метод numpy.correlate() возвращает взаимную корреляцию одномерных векторов v1 и v2.

Примеры программ с функцией numpy.correlate()

Пример 1

Программа для демонстрации работы метода numpy.correlate():

Источник

numpy.correlate#

This function computes the correlation as generally defined in signal processing texts:

with a and v sequences being zero-padded where necessary and \(\overline x\) denoting complex conjugation.

Parameters : a, v array_like

Refer to the convolve docstring. Note that the default is ‘valid’, unlike convolve , which uses ‘full’.

old_behavior bool

old_behavior was removed in NumPy 1.10. If you need the old behavior, use multiarray.correlate.

Returns : out ndarray

Discrete cross-correlation of a and v.

Discrete, linear convolution of two one-dimensional sequences.

Old, no conjugate, version of correlate.

uses FFT which has superior performance on large arrays.

The definition of correlation above is not unique and sometimes correlation may be defined differently. Another common definition is:

which is related to \(c_k\) by \(c’_k = c_\) .

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.

>>> np.correlate([1, 2, 3], [0, 1, 0.5]) array([3.5]) >>> np.correlate([1, 2, 3], [0, 1, 0.5], "same") array([2. , 3.5, 3. ]) >>> np.correlate([1, 2, 3], [0, 1, 0.5], "full") array([0.5, 2. , 3.5, 3. , 0. ]) 
>>> np.correlate([1+1j, 2, 3-1j], [0, 1, 0.5j], 'full') array([ 0.5-0.5j, 1.0+0.j , 1.5-1.5j, 3.0-1.j , 0.0+0.j ]) 

Note that you get the time reversed, complex conjugated result ( \(\overline>\) ) 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+0.j , 3.0+1.j , 1.5+1.5j, 1.0+0.j , 0.5+0.5j]) 

Источник

Оцените статью