我想知道在给定滤波器长度的情况下,在 python 中生成一维高斯内核的最简单方法是什么。我认为这个想法是评估向量 [-filter-length,...,filter_length] 值的正态分布,是否正确?
到目前为止,我已经这样做了,但我不知道为什么它不正确:
result = np.zeros( filter_length )
mid = filter_length/2
result=[(1/(sigma*np.sqrt(2*np.pi)))*(1/(numpy.exp((i**2)/(2*sigma**2)))) for i in range(-mid,mid+1)]
return result
其中sigma
是标准差,它是一个参数。filter-length
也是一个参数。
这是不正确的,因为我得到了,例如,对于 length=3 和sigma=math.sqrt(1.0/2/math.log(2))
[0.23485931967491286, 0.46971863934982572, 0.23485931967491286]
它应该是:
[0.25, 0.5, 0.25]
那么,有没有四舍五入的问题?我不知道发生了什么事...
编辑我认为我应该以某种方式截断
问题已解决问题是我没有正常化。我必须将向量除以其所有分量的总和。