拟合由三个方程描述的非平滑曲线

fitting a non-smooth curve that is described by three equations

我面临以下问题:

我想拟合一条曲线,该曲线由包含三个不同 x 范围的一组三个不同函数的基础模型描述,以确定三个未知参数(xG1xG2b) 这些功能中的四个整体。

对于x较小的转换值xG1,函数值应为零:

f(x) = 0 for x < xG1 

对于 xG1xG2 之间的 x,曲线遵循幂律:

f(x) = ( (xG2 - 2 a ⁄ b) / (a - 2 a ⁄ b) )∙[(x - xG1) / (xG2 - xG1)]^2 for xG1 ≤ x ≤ xG2

对于x更大的xG2曲线再次遵循线性关系:

f(x) = (x - 2 a ⁄ b) / (a - 2 a⁄b) for x ≥ xG2 

所以我现在的问题是过渡值 xG1xG2 本身是待确定的未知参数,所以我不能使用分段拟合来确定它们。

我一定会用 matlab 解决这个问题。

我试过使用曲线拟合工具箱,但它不太适合解决这样的问题,这就是为什么我目前正在尝试使用全局优化工具箱寻找方法。

也许有人想用全局优化工具箱或通常使用 matlab 的完全不同的方法来解决这个问题。

提前致谢

此致

有一次我不得不解决一个类似的问题,我有一个分段定义的模型,两个表达式之间的交叉点是一个自由参数。

我所做的是从对所有模型参数的初始猜测开始,然后最小化平方误差。在我的案例中,这是通过 gradient decent 完成的,我根据所有模型参数(包括交叉点)对梯度进行了数值评估。我当时没有使用 MATLAB,但这里可以应用相同的方法。

另一种方法是让 MATLAB 完成所有繁重的工作。如果您有权访问优化工具箱,则可以使用 fmincon 等函数来解决您的问题。 fmincon 将模型参数的向量和它试图最小化的成本函数作为输入。在这种情况下,模型参数的向量也将包含交叉点,并且您的成本函数将是模型中的错误,其中成本函数将解释不同的交叉点。