我正在尝试在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/

10-12 15:03