Matlab:使用给定的x-y错误为xy-data调整自定义函数

时间:2016-12-23 01:46:49

标签: matlab optimization curve-fitting least-squares

我一直在寻找一种可以进行非线性总体最小二乘拟合的Matlab函数,基本上适用于在所有维度上都有错误的数据的自定义函数。最简单的情况是x和y数据点,对于每个单点,x和y具有不同的给定标准偏差。这是所有自然科学中非常常见的场景,并且仅仅因为大多数人只知道如何在y中进行最小二乘拟合,并不意味着它不会非常有用。我知道问题比简单的y错误复杂得多,这可能是大多数人(甚至像我这样的物理学家)都学会了如何用多维错误正确地解决这个问题。

我希望像matlab这样的软件可以做到这一点,但除非我在阅读其他大多数有用的帮助页面时表现不佳,否则我认为即使是完整的' Matlab许可证不提供这样的拟合功能。其他工具如Origin,Igor,Scipy使用免费提供的fortran软件包" ODRPACK95"等。关于文件交换中的总体最小二乘法或deming拟合的贡献很少,但它们只适用于线性拟合,这对我来说没什么用。

我很高兴有任何可以帮助我的提示

亲切的问候

1 个答案:

答案 0 :(得分:0)

首先我应该指出,自从我去年毕业(也是一名物理学家)以来,我没有多次练习MATLAB。话虽如此,我记得使用

    lsqcurvefit()

在MATLAB中执行非线性曲线拟合。现在,根据自定义功能的含义,这可能会或可能不会起作用?我假设您想要使用类似于其中一个的已知表达式

    y = A*sin(x)+B
    y = A*e^(B*x) + C

如果不知道表格,例如非常难以执行拟合,例如如上。最终,所有数学函数都可以通过多项式来近似,以获得足够小的间隔。这是你可能想要考虑的事情,因为MATLAB确实有很多用于进行多项式回归的工具。

最后,我会建议你写自己的健身功能。网上有很多这样的例子。我们的想法是如上所述知道真正的解决方案形式,并猜测参数 A,B,C ...... 。创建一个错误(或成本)函数,它会在您的数据和猜测的解决方案之间产生定量误差(偏差)。然后将问题简化为最小化错误,MATLAB具有许多内置功能。<​​/ p>