np.convolve()是numpy库的一个内置方法,用于返回两个一维向量的离散线性卷积。numpyconvolve()方法接受三个参数,即v1、v2和**模式,**并返回v1和v2一维向量的离散线性卷积。
给定的两个信号(numpy中的数组)的卷积可以定义为第一个信号(数组)的积分,反转,卷积到第二个信号(数组)上,并在两个向量重叠的地方相乘(用标量积)。
离散卷积操作可以用以下的函数来定义。
(v1*v2)[n]=∑v1[m]v2[n-m]
numpy.convolve(v1,v2,mode)参数Numpyconvolve()函数最多需要三个参数:
v1:数组_like,第一个一维输入数组。假设它的形状为(M,)
v2:array_like,第二个一维输入数组。假设它的形状是(N,)
模式:{'完整'、'相同'、'有效'},可选
它是一个可选的参数,有三种不同的模式,解释如下:
convolve()方法返回v1和v2一维向量的离散线性卷积。
#importingthenumpymoduleimportnumpyasnp#Makingfist1-Dvectorv1v1=np.array([3,7])print("Firstvectorsequenceis:",v1)#Makingsecond1-Dvectorv2v2=np.array([1,2,5,7])print("Secondvectorsequenceis:",v2)print("\nprintinglinearconvolutionresultbetweenv1andv2usingdefault'full'mode:")print(np.convolve(v1,v2))print("\nprintinglinearconvolutionresultbetweenv1andv2using'same'mode:")print(np.convolve(v1,v2,mode='same'))print("\nprintinglinearconvolutionresultbetweenv1andv2using'valid'mode:")print(np.convolve(v1,v2,mode='valid'))输出Firstvectorsequenceis:[37]Secondvectorsequenceis:[1257]printinglinearconvolutionresultbetweenv1andv2usingdefault'full'mode:[313295649]printinglinearconvolutionresultbetweenv1andv2using'same'mode:[3132956]printinglinearconvolutionresultbetweenv1andv2using'valid'mode:[132956]解释在程序convolve1.py中,我们取了两个一维的输入向量v1和v2。然后我们通过使用三种不同的模式来显示输出的线性卷积值。
由于v1=[37],v2=[1257],并且操作是在完全模式下进行的,输出阵列的形状将由公式长度***(M+N-1)***给出,这里M=2,N=4。因此,结果矢量的形状将是2+4-1=5。
X从[37]反转到[73],然后我们进行乘法运算。
第一个元素。7*未定义(推断为0)+3*1=3
第二个元素。7*1+3*2=13
第三元素。7*2+3*5=29
第四元素。7*5+3*7=56
第五元素是7*7+3*未定义(推断为0)=49
因此,结果是:[313295649]
由于v1=[37],v2=[1257],并且操作是在相同模式下进行的,输出数组的形状将由公式max(M,N)给出,这里M=2,N=4。因此,结果向量的形状将是4。
X从[37]反转到[73],然后我们进行乘法运算:
第一个元素:7*未定义(推断为0)+3*1=3
第二个元素:7*1+3*2=13
第三元素:7*2+3*5=29
第四元素:7*5+3*7=56
由于v1=[37],v2=[1257],并且操作是在有效模式下进行的,输出数组的形状将由公式max(M,N)-min(M,N)+1给出,这里M=2,N=4,因此结果向量的形状将是:4-2+1=3.