matlab分段函数向量化,分段函数lmfi

博主在尝试使用Python的lmfit库对分段函数进行拟合时遇到问题,参数未能正确与数据结合计算。尝试了向量化函数、scipy.optimize.leastsq以及lambda函数,但未达到预期效果。在Matlab中使用nlinfit函数可以解决类似问题,但在Python中寻找等效方法未果。寻求如何在lmfit中定义分段函数以便进行数据比较和拟合的方法。
摘要由CSDN通过智能技术生成

我正在尝试定义一个分段函数,以便由Python中的lmfit库来拟合。我遇到的问题是我为函数定义的一个参数不会与我提交的数据一起计算。在

我有一个与我的here有点相似的例子。然而,answer描述的向量化函数并没有产生我想要的值,而且在阅读文档时,它似乎不是我的解决方案的答案。我也用过scipy.optimize.leatsq,但我遇到了与下面描述的lmfit相同的问题。在

我有一个剩余函数的定义,比如from lmfit import minimize, Parameters, Model

def residual(params, y, x):

param1 = params['one']

param2 = params['two']

if(param2 < x):

p = 1

else:

p = param1*x + param2

return p - y

params = Parameters()

params.add('one', value=1)

params.add('two', value=2)

out = minimize(residual, params,args=(y,x))

我还试着定义函数

^{pr2}$

我也尝试过内联使用lambda函数。在

我得到了一个错误“具有多个元素的数组的真值不明确”。当我得到错误时,它发生的原因是有道理的,因为(param2&lt;x)将生成一个逻辑数组。然而,我似乎找不到一种方法来用给定的情况以分段的方式定义函数,以使它与最小拟合()功能。我已经在Matlab中看到了答案,其中nlinfit函数似乎可以毫无问题地对数据元素求值(我尝试搜索Python是否有一个等价的操作来定义元素计算,比如.*或.+,但这似乎没有显式存在)。在

与nlinfit相比,lmfit的操作方式似乎也有点不同,因为我们必须总是有残差返回(model-y),而nlinfit一旦函数给定就输出结果,我不确定这可能是另一个问题。在

所以重申一下,我的主要问题是,是否有一种方法来定义分段函数,以便它可以将参数与数据集进行比较。在

任何帮助或解释将不胜感激,谢谢!在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值