为什么我的python lmfit leatsq fitting函数传递了太多参数?

2024-09-30 08:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着寻找一个和我犯同样错误的人,但没有得到快乐!这也是我的第一篇文章,所以如果解释或指导不当,我道歉。欢迎咨询。在

我要解决的问题是:通过测量到许多已知参考点的距离来找到某种接收器的位置。这是基本的三边测量,我用最小二乘法来做这个。在

我成功地使用了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.数组但这似乎是不可避免的。有人能看出我做错了什么吗?在

谢谢


Tags: 函数代码距离错误文章scipy数组params
1条回答
网友
1楼 · 发布于 2024-09-30 08:29:30

在对minimize的调用中,更改

args=(stationarray)

^{pr2}$

args必须是一个序列(通常是元组),其元素是传递给函数的参数。要创建长度为1的元组,需要额外的逗号。当你写args=(stationarray)(不加逗号)时,括号没有作用,这与写args=stationarray是一样的。minimize然后将函数调用为residualfunct(params, stationarray[0], stationarray[1], ...),这将导致您报告的错误。在

相关问题 更多 >

    热门问题