Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个阵列的scipy卷积_Python_Scipy_Convolution - Fatal编程技术网

Python 两个阵列的scipy卷积

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

我有两个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中这两个函数的卷积给出:

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') 
据我所知,“相同”模式允许对原始网格的相同点进行评估,但情况似乎并非如此。。。非常感谢您的帮助