2016-05-10 4 views
1

Есть ли способ с Python выполнить круговую свертку между двумя 1D-массивами, как с функцией Matlab cconv? Я пробовал numpy.convolve, но это не то же самое, и я не могу найти эквивалент.Круговая свертка в python

ответ

3

Вы можете попробовать эту команду: scipy.ndimage.filters.convolve1d

Вы вариант, который называется mode и вы можете написать mode = wrap

С, что вы получаете периодические граничные условия как заполнение для свертки

Для пример:

result = scipy.ndimage.convolve(image,kernel,mode='wrap') 

import numpy as np 
image = np.array([[0, 0, 0, 0], 
        [0, 0, 0, 1], 
        [0, 0, 0, 0]]) 
kernel = np.array([[1, 1, 1], 
        [1, 1, 1], 
        [1, 1, 1]]) 
from scipy.ndimage import convolve 
convolve(image, kernel, mode='wrap') 
array([[1, 0, 1, 1], 
     [1, 0, 1, 1], 
     [1, 0, 1, 1]]) 
Смежные вопросы