2016-11-20 37 views
0

我與Python SciPy的工作,我有下面的代碼比較:如何函數值以恆定

... 
t = np.linspace(0, simtime, points) 

def Vbooster90(t): 
    return np.sin(t * 2 * np.pi*F_booster + 0.5 * np.pi) 

def beam(t): 
    return np.sign(Vrfq(t) - Vrfq(bunchwidth)) * 0.5 + 0.5 

def criteria(t): 
    return np.sign(Vbooster90(t)) 

def kicker(t): 
    if criteria(t) > 0: 
     k(t)=beam(t) 
    else: 
     k(t)=0 

    return k(t) 

我有最後一個功能kicker(t)問題。我想在每個t的值處將函數criteria(t)與零進行比較,並且在criteria(t)大於零的情況下,我想在相同的t值處將kicker(t)分配給函數beam(t)的值。我是Python的新手,不太熟悉語法。

+1

請修復所有縮進,尤其是在起腳()函數。另外,你正在試圖引用叫做'k(t)'的東西,但是這不是用於引用一個向量或者列表的有效語法(你想''..]'),而且你還沒有聲明它。 – smci

回答

0

修改kicker函數,如下所示。

def kicker(t): 
    k = 0 
    if criteria(t) > 0: 
     k = beam(t) 
return k 
0

感謝的答案,而不是定義函數我解決了它未來的方式:

kicker = np.empty(points) 
i = np.arange(points) 
time = np.empty(points) 
time[i] = i*simtime/points 

for i in range(points): 
    if criteria(time[i]) > 0: 
    kicker[i] = beam(time[i]) 
    else: 
    kicker[i] = 0