假设我想对关闭灯光时记录的数据拟合一条直线,但现在我不小心把灯光开着,从第101个数据点开始,我的数据存在恒定偏移。
我该如何进行拟合?我尝试了为x设置条件,但出现了错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
请记得取消注释剩余代码(以遇到错误)。
预期输出:
我该如何进行拟合?我尝试了为x设置条件,但出现了错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
请记得取消注释剩余代码(以遇到错误)。
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
d1 = np.random.normal(0,0.1, 100)
d2 = np.random.normal(3,0.1, 100)
x = np.arange(0,200)
y = np.concatenate((d1,d2))
plt.plot(x, y)
# def line(x, a, b, offset):
# if x < 101:
# y = a * x + b
# else:
# y = (a * x + b) + offset
# return y
#
# popt, pcov = optimize.curve_fit(line, xdata = x, ydata = y)
#
# plt.plot(x, line(x, *popt), color = "firebrick")
plt.show()
预期输出:
return f(x) * (x => z) + g(x) * (x < z)
,结果发现所有参数的误差都是正无穷或负无穷。所以你是完全正确的! :) - komodovaran_