一维高斯卷积

时间:2018-10-01 07:30:10

标签: python arrays convolution gaussian

我是卷积菜鸟,我在使用Python。我正在尝试将1D数组与1D高斯进行卷积,而我的数组是

B = [0.011,0.022,.032,0.027,0.025,0.033,0.045,0.063,0.09,0.13,0.17,0.21]

高斯的FWHM为5。所以我计算出西格玛为5/2.385 = ~2.09现在,我有2个选择:

  1. 使用高斯标准方程式生成高斯内核,并使用np.convolve(array,Gaussian) Gaussian equation I used

  2. 使用scipy.ndimage.gaussian_filter1d 由于两者都是卷积任务,因此理论上都应该提供相似的输出。但事实并非如此。为什么会这样?

我已在图像上绘制了阵列与另一个等距阵列的关系

A = [1.0, 3.0, 5.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0, 21.0, 23.0]

The array (B) plotted against equally spaced array (A) 基本上,我想将convolved arraynon-convolved数组与A一起绘制。我该怎么做?

1 个答案:

答案 0 :(得分:0)

为什么numpy.convolvescipy.ndimage.gaussian_filter1d呢?

这是因为两个函数对边缘的处理方式不同;至少是默认设置。如果您在中心以一个简单的峰值在其他任何地方都为零,那么结果实际上是相同的(如下所示)。默认情况下,scipy.ndimage.gaussian_filter1d在边缘反映数据,而numpy.convolve实际上将零填充数据。因此,如果您在scipy.ndimage.gaussian_filter1d中选择具有默认值mode='constant'的{​​{1}}和cval=0中的numpy.convolve来生成相似大小的数组,则结果与您可以看到下面一样。

取决于要对数据进行的处理,您必须确定应如何处理边缘。

关于如何绘制此图形,希望我的示例代码对此进行解释。

mode=same

提供以下图片:

Several convolve "configurations"