Привет, я пытаюсь создать функцию Лоренца, которая принимает входной массив с именем «freq», центр профиля как «freq0» и отклонение функции как «gamma» (половина ширины параметра масштаба на половине максимума).
Я создал функцию следующим образом
def LorentzProfileFreq(freq, freq0, gamma):
'''
Return a Lorentz profile on a given frequency grid
Parameters
----------
freq: array_like
Frequency grid
freq0: float
Center of the profile
gamma: float
Scale parameter gamma (hald-width at half-maximum)
Returns
-------
LorentzProfileFreq: ndarray
Lorentz profile
'''
Lorentz=1/np.pi*((gamma/2)/((freq-freq0)**2+(gamma/2)**2))
return Lorentz(freq,freq0,gamma)
И тестирование функции, которую я сделал:
def test_LorentzProfileFreq():
x=np.arange(-5,5,0.1)
y=LorentzProfileFreq(np.arange(-5,5,0.1),0,1)
plt.plot(x,y)
plt.show()
Что дает мне ошибку
TypeError: 'numpy.ndarray' object is not callable'
Я не понимаю, почему np.arange не вызывается?
Пожалуйста, включите полную ошибку трассировки.
@ewong фейспалмы Хорошо, спасибо, вы решили!
return Lorentz
Lorentz
не является функцией. Вот почему numpy
пожаловался. (Lorentz
- это пустой массив)
Вместо этого вы хотите вернуть
return Lorentz
, который является массивом, но вместо этого вы вызываете его, как если бы это была функция.