2014-06-10 74 views
3

我需要用中心爲3934.8A的特定參數的高斯函數來卷積下一個曲線。Python - 用高斯卷積

enter image description here

我看到的問題是,我的曲線是一個離散陣列和高斯將是一個良好定義連續的函數。我該如何做這項工作?

+1

http://blancosilva.wordpress.com/teaching/mathematical-imaging/convolution-with-gaussian-kernels/ – fecub

+0

你有什麼個人嘗試過到目前爲止與python? –

+0

你可以離散你的高斯(與np.histogram或列表理解或東西)並將其傳遞給np.convolve?這似乎對我很好。 – freshtop

回答

6

要做到這一點,您需要創建一個高斯曲線,並以與曲線相同的空間比例進行離散化,然後進行卷積。假設你的原始曲線有N點,這些點沿着x軸均勻分佈(其中N一般在50到10000之間)。然後沿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") 

這裏,這是一個零爲中心的高斯,不包括偏移,您指的(這對我來說會只是增加了混淆,因爲卷積本身就是一種翻譯操作,所以從已經翻譯過的東西開始就是令人困惑的)。

我強烈建議把所有的東西放在真實的物理單位中,就像我上面所做的那樣。那麼很明顯,例如,高斯的寬度是多少等等。