我试着寻找一个和我犯同样错误的人,但没有得到快乐!这也是我的第一篇文章,所以如果解释或指导不当,我道歉。欢迎咨询。在
我要解决的问题是:通过测量到许多已知参考点的距离来找到某种接收器的位置。这是基本的三边测量,我用最小二乘法来做这个。在
我成功地使用了scipy.optimize公司lesatsq函数已经完成了,所以我很确定我的拟合函数是有效的。但是,我希望能够使用lmfitpython包提供的一些额外特性,并且我正在努力将其翻译成accross。完整的尝试代码在这里:http://pastebin.com/4xbfkaCm
lmfit minimize函数设置对我的fitting函数(称为residualfunct)的调用,如下所示:stationarray是一个numpy数组,包含站点位置和范围,params是拟合法函数中使用的参数字典
position = minimize(residualfunct, params, args=(stationarray))
拟合函数定义为
^{pr2}$当我运行这段代码时,我得到了类型错误:
residualfunct() takes exactly 2 arguments (5 given).
由于这个调用是由minimize函数发出的,我不知道我对此有什么控制权。我只能想象这是因为我路过一个np.数组但这似乎是不可避免的。有人能看出我做错了什么吗?在
谢谢
在对
minimize
的调用中,更改到
^{pr2}$args
必须是一个序列(通常是元组),其元素是传递给函数的参数。要创建长度为1的元组,需要额外的逗号。当你写args=(stationarray)
(不加逗号)时,括号没有作用,这与写args=stationarray
是一样的。minimize
然后将函数调用为residualfunct(params, stationarray[0], stationarray[1], ...)
,这将导致您报告的错误。在相关问题 更多 >
编程相关推荐