Метод numpy.convolve() используется в Python для возврата дискретной линейной свертки двух одномерных последовательностей.
Свертку данных двух сигналов (массивов в случае numpy) можно определить как интеграл первого сигнала(массива), перевернутый, свернутый во второй сигнал(массив) и умноженный(со скалярным произведением) в точках, где векторы перекрываются.
Содержание
Формула
Дискретную операцию свертки можно определить с помощью следующей функции:
|
1 |
(v1 * v2) [n] = ∑ v1[m]v2[n-m] |
Синтаксис
|
1 |
numpy.convolve(v1, v2, mode) |
Параметры
Он принимает не более трех параметров:
- v1: array_like, первый одномерный входной массив. Имеет форму(М,)
- v2: array_like, второй одномерный входной массив. Имеет форму(N,)
- mode: {‘full’, ‘same’, ‘valid’}.
Это необязательный параметр, который имеет три различных режима, которые описаны ниже:
- «full»: это режим по умолчанию. Это возвращает свертку в каждой точке перекрытия с выходной формой(M+N-1). В конечных точках свертки векторы v1 и v2 не перекрываются полностью, и можно увидеть граничные эффекты.
- «same»: в ‘same’ режиме выходная последовательность имеет длину max(M, N). Граничные эффекты по-прежнему будут видны.
- «valid»: в этом «действительном» режиме выходная последовательность имеет длину max(M,N) – min(M,N) + 1. Продукт свертки выдается только в том случае, если v1 и v2 полностью перекрываются. Значения, находящиеся за пределами границы сигнала, не влияют.
Возвращаемое значение
Метод convolve() возвращает дискретную линейную свертку одномерных векторов v1 и v2.
Пример: как использовать метод numpy.convolve()
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# importing the numpy module import numpy as np # Making fist 1-D vector v1 v1 = np.array([3, 7]) print("First vector sequence is: ", v1) # Making second 1-D vector v2 v2 = np.array([1, 2, 5, 7]) print("Second vector sequence is: ", v2) print("\Linear convolution result between v1 and v2 using default 'full' mode:") print(np.convolve(v1, v2)) print("\nLinear convolution result between v1 and v2 using 'same' mode:") print(np.convolve(v1, v2, mode='same')) print("\Linear convolution result between v1 and v2 using 'valid' mode:") print(np.convolve(v1, v2, mode='valid')) |
Выход
|
1 2 3 4 5 6 7 8 9 10 11 |
First vector sequence is: [3 7] Second vector sequence is: [1 2 5 7] printing linear convolution result between v1 and v2 using default 'full' mode: [ 3 13 29 56 49] printing linear convolution result between v1 and v2 using 'same' mode: [ 3 13 29 56] printing linear convolution result between v1 and v2 using 'valid' mode: [13 29 56] |
