我需要使用以3934.8A为中心的特定参数的高斯函数对下一条曲线进行卷积。
我看到的问题是我的曲线是一个离散数组,而高斯曲线将是一个定义明确的连续函数。我该如何进行这项工作?
最佳答案
为此,您需要创建一个高斯分布,该高斯分布与曲线在相同的空间比例下离散,然后进行卷积。
具体来说,假设您的原始曲线的N
点沿x轴均匀分布(其中N
通常在50到10,000左右之间)。然后,沿x轴的点间距将为(physical range)/(digital range) = (3940-3930)/N
,代码将如下所示:
dx = float(3940-3930)/N
gx = np.arange(-3*sigma, 3*sigma, dx)
gaussian = np.exp(-(x/sigma)**2/2)
result = np.convolve(original_curve, gaussian, mode="full")
在这里,这是一个以零为中心的高斯,不包括您所引用的偏移量(对我而言,这只会增加混淆,因为卷积的本质是翻译操作,因此从已翻译的内容开始会造成混淆)。
我强烈建议像上面一样,将所有内容都保留在实际的物理单元中。这样就很清楚了,例如,高斯的宽度是多少,等等。
关于Python-高斯卷积,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24148902/