2016-12-19 36 views
0

我定義了函數並調用它來將計算值存儲在數組中。然而,數組中的值與它們應該是不同的。我繪製了函數的輸出和存儲的數組值。任何人都可以幫我解決這個問題。這裏是代碼和輸出。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'返回浮點數。例如。嘗試調用'高斯(40,0,1000,50,15)'和'高斯(40.0,0,1000,50,15)',你會看到區別。當您執行整數除法時,結果會被截斷(對於Python 2.7及更早版本)。 –

回答

2

linspace提供了去gaussian作爲載體,並根據在矢量numpy的處理運算符浮點數的向量。另一方面,要填寫PhaseArray,請以x整數gaussian作爲參數,以不同方式處理。它解釋了這種差異。