高斯函数与非对称高斯函数卷积结果峰值位置异常问题咨询
卷积结果峰值位置不符合预期的原因分析
我对高斯函数与非对称高斯函数执行卷积运算,实现代码如下:
import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,5,500) dx=x[1]-x[0] # Gaussian sigma1=0.1 peak1=1 gauss1=np.exp(-(x-peak1)**2/(2*sigma1**2)) # Asymmetric Gaussian gauss2=0.5*np.exp(-(x-1.5)**2/(-0.2+x*0.4)**2) # convolution conv=np.convolve(gauss1,gauss2,mode='same')*dx plt.plot(x,gauss1,label='Gaussian') plt.plot(x,gauss2,label='Asymmetric Gaussian') plt.plot(x,conv,label='Convolution') plt.xlim(0,5) plt.legend() plt.show()
已得到卷积结果图像,但无法理解结果曲线的位置,原本认为它的峰值应该处于两个原始曲线的峰值位置之间,这是为什么?
原因解析
误解了卷积峰值的位置规律:两个函数卷积的峰值位置不是原函数峰值的中间,而是原函数峰值位置的和(当函数定义在整个实数域时)。
卷积的数学定义为:$(f*g)(t) = \int_{-\infty}^{\infty} f(\tau)g(t-\tau)d\tau$,当$t = a + b$($a$是$f(x)$的峰值位置,$b$是$g(x)$的峰值位置)时,$\tau = a$,$t-\tau = b$,此时两个函数同时取到各自的峰值,乘积达到最大值,积分结果也对应卷积的峰值。对应你的具体案例:
- gauss1的峰值在$x=1$,gauss2的峰值在$x=1.5$,按照规律卷积的峰值应出现在$1+1.5=2.5$附近,这和你得到的结果完全一致。
非对称高斯的影响:你的gauss2是右拖尾的非对称高斯($x>1.5$区域衰减更慢),这会让卷积曲线在峰值右侧的拖尾更长,但这不会改变峰值位置的核心逻辑——峰值位置由两个原函数峰值的和决定。
内容的提问来源于stack exchange,提问作者freja
相关产品推荐
相关产品推荐

