我正在尝试在C,MATLAB或Python中实现周期高斯。
如下定义评估周期高斯函数的正确方法是什么
我目前正在根据以下公式进行评估,以避免总和为负到正:
提前致谢。
最佳答案
好吧,您不必评估无穷大,因为一旦获得(x-kL)>> 2sigma,您将达到浮点精度的极限。
因此,您应该能够从找到x-kL的最小值开始(即,只需将x = x mod L且k = 0设置为合法,因为这是一个无限大的和),然后在k = + / -1,+/- 2,...,直到达到浮点数限制。这是一些示例MATLAB代码,说明了这一想法-我只是简单地说明了这一点,所以我不能保证它没有错误,但是它确实表现出一些基本的预期行为。
function [result] = Periodic_Gaussian(x, L, sigma)
gaussian = @(y) 1/(2*pi*sigma)*exp(-y.^2 ./ 4 ./sigma^2);
x = mod(x, L);
oldresult = NaN;
newresult = gaussian(x);
k = 1;
while any(newresult ~= oldresult)
oldresult = newresult;
newresult = oldresult + gaussian(x-k*L) + gaussian(x+k*L);
k = k+1;
end
result = newresult;
希望这会有所帮助!
编辑:指数参数的分母中缺少4因子,并且根据需要更新了代码以采用x的向量。
关于python - 周期性高斯的实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26022500/