python 曲线拟合参数能否为数组_Scipy曲线拟合全局参数

我正在尝试用python中的Scipy curve_fit拟合一个星系模型的两个全局参数。我有一个自变量数组和一个因变量数组。数据集的前1/4需要根据两个全局参数和两个局部参数来拟合函数,下一个季度需要拟合另一个函数,这取决于两个全局参数和两个局部变量等

不管怎样,我能写一个函数来调用适当的函数,这个函数有正确的索引和整个数组的全局参数。在

到目前为止,我得到的是:def galaxy_func_inner(time,a,b,c,d):

telescope_inner = lt.station(rot_angle=c,pol_angle=d)

power = telescope_inner.calculate_gpowervslstarray(time)[0]

return a*np.array(power)+b

def galaxy_func_outer(time,a,b,c,d):

telescope_outer = lt.station(rot_angle=c,pol_angle=d)

power = telescope_outer.calculate_gpowervslstarray(time)[0]

return a*np.array(power)+b

def galaxy_func_global(time,R,P,a,b,c,d,e,f,g,h):

for t_index in range(len(time)):

if t_index in range(0,50):

return galaxy_func_outer(t_index,a,b,R,P)

elif t_index in range(50,100):

return galaxy_func_outer(t_index,c,d,R,P)

elif t_index in range(100,150):

return galaxy_func_inner(t_index,e,f,R,P)

elif t_index in range(150,200):

return galaxy_func_inner(t_index,g,h,R,P)

问题是,这种方法只适用于第一次,而不适用于整个时间序列,并且单点只适合于相应的模型点,而不是整个阵列。你能帮我重新制定这个吗?我试图将其重新表述为:

^{pr2}$

但我得到了一个错误:File "galaxy_calibration.py", line 117, in

popt,pcov = curve_fit(galaxy_func_global,xdata,ydata)

File "/Library/Python/2.7/site-packages/scipy-0.14.0.dev_7cefb25-py2.7-macosx-10.9-intel.egg/scipy/optimize/minpack.py", line 555, in curve_fit

res = leastsq(func, p0, args=args, full_output=1, **kw)

File "/Library/Python/2.7/site-packages/scipy-0.14.0.dev_7cefb25-py2.7-macosx-10.9-intel.egg/scipy/optimize/minpack.py", line 369, in leastsq

shape, dtype = _check_func('leastsq', 'func', func, x0, args, n)

File "/Library/Python/2.7/site-packages/scipy-0.14.0.dev_7cefb25-py2.7-macosx-10.9-intel.egg/scipy/optimize/minpack.py", line 20, in _check_func

res = atleast_1d(thefunc(*((x0[:numinputs],) + args)))

File "/Library/Python/2.7/site-packages/scipy-0.14.0.dev_7cefb25-py2.7-macosx-10.9-intel.egg/scipy/optimize/minpack.py", line 445, in _general_function

return function(xdata, *params) - ydata

ValueError: operands could not be broadcast together with shapes (4,) (191,)

任何帮助都将不胜感激。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值