Spec-Zone.ru › NumPy 1.21

numpy.correlate

numpy.correlate(a, v, mode='valid')[source]

Взаимная корреляция двух одномерных последовательностей.

Эта функция вычисляет корреляцию, как это обычно определено в текстах по обработке сигналов:

c_{av}[k] = sum_n a[n+k] * conj(v[n])

где последовательности a и v дополняются нулями по необходимости, а conj — сопряжение.

Параметры
a, varray_like

Входные последовательности.

mode{‘valid’, ‘same’, ‘full’}, optional

Обратитесь к convolve документации. Обратите внимание, что по умолчанию используется ‘valid’, в отличие от convolve, которая использует ‘full’.

old_behaviorbool

old_behavior был удален в NumPy 1.10. Если вам нужна старая реализация, используйте multiarray.correlate.

Возвращает
outndarray

Дискретная взаимная корреляция a и v.

См. также

convolve

Дискретное линейное свёртки двух одномерных последовательностей.

multiarray.correlate

Старая версия корреляции без сопряжения.

scipy.signal.correlate

использует БПФ, что обеспечивает превосходную производительность для больших массивов.

Примечания

Определение корреляции выше не является уникальным, и иногда корреляция может быть определена по-другому. Другое общее определение:

c'_{av}[k] = sum_n a[n] conj(v[n+k])

что связано с c_{av}[k] посредством c'_{av}[k] = c_{av}[-k].

numpy.correlate может работать медленно для больших массивов (например, n = 1e5), потому что не использует БПФ для вычисления свёртки; в этом случае scipy.signal.correlate может быть предпочтительнее.

Примеры

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

Обратите внимание, что вы получаете инвертированное по времени, комплексно сопряжённое значение, когда две входные последовательности меняются местами, т.е., c_{va}[k] = c^{*}_{av}[-k]:

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

© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.correlate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API