【发布时间】:2020-02-04 11:15:34
【问题描述】:
我想熟悉基于傅立叶的卷积。因此,我使用numpy.fft 和scipy.signal.convolve 创建了一个小示例。但是,这两种操作的结果是不同的,并且
我不知道为什么。
有人有想法吗?
我已经尝试过使用scipy.signal.convolve的不同模式。
例子:
import numpy as np
from scipy.signal import convolve
# Generate example data
data = np.array([1, 1, 1, 1, 1, 1])
kernel = np.array([0, 1, 2, 1, 0, 0])
# Using scipy.signal.convolve
A = convolve(kernel, data, mode='full')
B = convolve(kernel, data, mode='valid')
C = convolve(kernel, data, mode='same')
# Using the convolution theorem
D = np.fft.ifft(np.fft.fft(kernel) * np.fft.fft(data))
结果是:
A = array([0, 1, 3, 4, 4, 4, 4, 3, 1, 0, 0])
B = array([4])
C = array([3, 4, 4, 4, 4, 3])
D = array([4.+0.j, 4.+0.j, 4.+0.j, 4.+0.j, 4.+0.j, 4.+0.j])
【问题讨论】:
标签: python numpy scipy fft convolution