次のように、「超ガウス」関数を生成してプロットするための 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
のみであるため、float として解釈されていることを意味しているように見えますが、N
...
私はnumpy 1.7.1とscipy 0.12.0でpython 3.3.2を実行しています