Я пытаюсь найти гауссову функцию смещения по x, которая при свертывании (с numpy.convolve) с одним набором данных подходит для другого.Однако когда я пытаюсь сопоставить эту сложную серию операций с моими данными, это дает мне ошибку в отношении количества аргументов.
У меня есть 5 сигналов, значения которых записаны в несколько разные даты.Теоретически, последние 4 сигнала (g, r, i и z) могут быть смоделированы как равные первому сигналу u после того, как они были свернуты с некоторой функцией свертки, которую я смоделировал как гауссову кривую.
Я пытаюсь найти параметры mu и sigma, которые описывают гауссиан для каждой из 4 сверток сигналов.Я делаю это путем интерполяции первого сигнала u, чтобы сгенерировать больше точек, описывающих его, путем помещения этих интерполированных значений через свертку с неизвестным гауссианом, а затем с помощью функции scipy curve_fit, чтобы найти параметры, которые наилучшим образом соответствуют каждому из 4 записанных сигналов.
Я пытался вложить свои функции различными способами, я пытался поместить все функции в одну команду, а не вызывать функции, которые я определяю сам, это самое близкое к успешному выполнению этой задачи.
#defined the gaussian function with the 3 parameters a mu and sig to be found.
#test_x is a numpy.linspace array with numbers from -10 to 10.
def gauss(a, mu, sig):
return a * np.exp(-np.power(test_x - mu, 2.) / (2 * np.power(sig, 2.)))
#defined the convolution of the callable interpolated u data (interpu) with
#the defined gaussian function gauss
def gaussconv(a, mu, sig):
return np.convolve(interpu, gauss(a, mu, sig))
#defined a function that should in theory model the convolved interpolation
#and gaussian against the inputted x data datex and magnitude dana normx, with
#the initial guesses for a mu and sig being 0.15, 1, and 0.5 respectively
def fit(datex, normx):
return spo.curve_fit(gaussconv, datex, normx, p0=[0.15,1,0.5])
В идеале он должен выводить с вычисленными значениями mu и sig, которые лучше всего соответствуют свертке с записанными данными, но вместо этого я получаю это сообщение об ошибке:
TypeError: gaussconv() takes 3 positional arguments but 4 were given.
Любая помощь будетоценены.