我是卷积菜鸟,我在使用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个选择:
使用高斯标准方程式生成高斯内核,并使用np.convolve(array,Gaussian) Gaussian equation I used
使用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 array
和non-convolved
数组与A
一起绘制。我该怎么做?
答案 0 :(得分:0)
为什么numpy.convolve
和scipy.ndimage.gaussian_filter1d
呢?
这是因为两个函数对边缘的处理方式不同;至少是默认设置。如果您在中心以一个简单的峰值在其他任何地方都为零,那么结果实际上是相同的(如下所示)。默认情况下,scipy.ndimage.gaussian_filter1d
在边缘反映数据,而numpy.convolve
实际上将零填充数据。因此,如果您在scipy.ndimage.gaussian_filter1d
中选择具有默认值mode='constant'
的{{1}}和cval=0
中的numpy.convolve
来生成相似大小的数组,则结果与您可以看到下面一样。
取决于要对数据进行的处理,您必须确定应如何处理边缘。
关于如何绘制此图形,希望我的示例代码对此进行解释。
mode=same
提供以下图片: