Когда я использую curve_fit()
для соответствия моей кривой, я получаю предупреждение во время выполнения. Похоже, в процессе примерки я получил значение переполнения. Но как этого избежать?
Часть кода ...
def pre_func(x, b, c, p, q, v, w):
return np.piecewise(x, [x < v, x >= v], [lambda x: pre_func_1(x, w),
lambda x: pre_func_2(x, b, c, p, q, v, w)])
def main():
global t_pre
global p
global q
data_file = open('run0035.bin', 'rb')
signal = Signal()
n = 35
data_file.read(2*n*20000)
u_temp = []
for _ in range(0, 20000):
data_temp = data_file.read(2)
data_dec, = struct.unpack('h', data_temp)
u_temp.append(-data_dec)
signal.u = u_temp
signal.draw()
u_baseline = signal.get_baseline()
u_max = signal.get_max()
t_max = signal.get_max_t()
b = (u_baseline - u_max) / 2.0
c = (u_baseline - u_max) / 2.0
v = t_max
w = u_max
fit_par = [b, c, p, q, v, w]
popt, pcov = curve_fit(pre_func, signal.t, signal.u, fit_par, maxfev=5000)
print(popt)