Python 两个阵列的scipy卷积
我有两个Numpy(复数)数组A[t],B[t]定义在点“t”的网格上。这两个数组的卷积方式使得我需要第三个数组C[y]=(a*B)(y),其中“y”需要与“t”网格完全相同。关键是A和B都需要根据标准卷积运算从-\infty集成到\infty 我使用scipy.signal.convolve来实现这一点,我还想使用fftconvolve,因为我的阵列应该足够大。然而,当我在最小的工作代码上尝试该模块时,我似乎做得非常错误。这是一段代码,其中我选择a(t)=exp(-t**2)和B(t)=exp(-t)。Mathematica中这两个函数的卷积给出:Python 两个阵列的scipy卷积,python,scipy,convolution,Python,Scipy,Convolution,我有两个Numpy(复数)数组A[t],B[t]定义在点“t”的网格上。这两个数组的卷积方式使得我需要第三个数组C[y]=(a*B)(y),其中“y”需要与“t”网格完全相同。关键是A和B都需要根据标准卷积运算从-\infty集成到\infty 我使用scipy.signal.convolve来实现这一点,我还想使用fftconvolve,因为我的阵列应该足够大。然而,当我在最小的工作代码上尝试该模块时,我似乎做得非常错误。这是一段代码,其中我选择a(t)=exp(-t**2)和B(t)=exp
C[y] = \integral_{-\infty}^{\infty} dt A[t]B[ y- t ] = sqrt(pi)*exp( 0.25 - y )
但是,我在Python中尝试了这一点,得到了非常错误的结果:
import scipy.signal as scp
import numpy as np
import matplotlib.pyplot as plt
delta = 0.001
t = np.arange(1000)*delta
a = np.exp( -t**2 )
b = np.exp( -t )
c = scp.convolve(a, b, mode='same')*delta
d = np.sqrt(np.pi)*np.exp( 0.25 - t )
plt.plot(np.arange(len(c)) * delta, c)
plt.plot(t[::50], d[::50], 'o')
据我所知,“相同”模式允许对原始网格的相同点进行评估,但情况似乎并非如此。。。非常感谢您的帮助