2016-12-19 11 views
0

計算された値を配列に格納するために関数を定義し、それを呼び出して呼び出しています。しかし、arrayの値は、必要な値とは異なります。関数の出力と格納された配列の値の両方をプロットしました。誰も私がこの問題を解決するのを助けることができます。ここにコードと出力があります。Python配列の値が定義済みの関数と異なる

from numpy import linspace, exp 
import matplotlib.pyplot as pl 

def gaussian(x, off, amp, cen, wid): 
    return off+amp * exp(-(x-cen)**2 /wid**2) 

PhaseArray = [0 for x in range (100)] 

for x in range(100): 
    PhaseArray[x] = gaussian(x, 0, 1000, 50, 15) 

x = linspace(0,99,100) 
fig = pl.figure() 
pl.plot(PhaseArray, 'go-') 
pl.plot(x, gaussian(x, 0, 1000, 50, 15), 'ro-') 
pl.show() 

出力プロットは

enter image description here

+0

'range'は整数を返しますが、' linspace'は浮動小数点を返します。例えば。 'gaussian(40、0、1000、50、15)'と 'gaussian(40.0、0、1000、50、15)'を呼び出すと、その違いがわかります。整数の除算を実行すると、結果は切り捨てられます(Python 2.7以前の場合)。 –

答えて

2

linspaceのように見えるベクトルとしてgaussianに移動して、ベクトルの上にnumpyのオペレータに従って処理されている浮動小数点数のベクターを提供します。一方、PhaseArrayを入力するには、別の方法で処理される整数xgaussianを入力します。それは違いを説明します。

関連する問題