Python - 高斯卷积

时间:2014-06-10 19:00:14

标签: python convolution

我需要使用以3934.8A为中心的特定参数的高斯函数来卷积下一条曲线。

enter image description here

我看到的问题是我的曲线是一个离散数组,高斯是一个很好定义的连续函数。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:7)

要做到这一点,你需要创建一个在与曲线相同的空间尺度上离散化的高斯,然后进行卷积。

具体来说,假设您的原始曲线具有沿{x轴均匀间隔的N个点(其中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")

这是一个以零为中心的高斯,并不包括你所指的偏移(对我来说只会增加混淆,因为卷积本质上是一个翻译操作,所以从已翻译的东西开始是令人困惑的)。

我强烈建议将所有内容保存在真实的物理单位中,就像我上面所做的那样。然后它很清楚,例如,高斯的宽度等等。