我正在编写 Python 代码来生成和绘制“超高斯”函数,如下所示:
def supergaussian(x, A, mu, sigma, offset, N=8):
"""Supergaussian function, amplitude A, centroid mu, st dev sigma, exponent N, with constant offset"""
return A * (1/(2**(1+1/N)*sigma*2*scipy.special.gamma(1+1/N))) * numpy.exp(-numpy.absolute(numpy.power(x-mu,N))/(2*sigma**N)) + offset
init_x = numpy.arange(-100,100,1.0)
init_y = supergaussian(init_x, 1, 0, 25, 0, N=12)
以下代码只是对其进行了绘制。出于某种我无法理解的原因,当使用默认值 8N
或N
最高 13 的值时,此代码可以正常工作。当N
为 14 或更高时,函数会崩溃并显示错误消息:
AttributeError: 'float' object has no attribute 'exp'
在函数定义的返回行。有任何想法吗?由于该行中唯一使用 .exp 的是numpy.exp
错误消息似乎暗示它numpy
被解释为浮点数,但仅适用于N
...
我正在使用 numpy 1.7.1 和 scipy 0.12.0 运行 python 3.3.2