【问题标题】:Which type of equation to use in the curve fitting tool in Matlab?在 Matlab 的曲线拟合工具中使用哪种类型的方程?
【发布时间】:2021-11-08 01:15:56
【问题描述】:

我有一些数据点,我想为该曲线拟合一个自定义方程。数据如下:

-20.5   -632.8475722
-19.5   -633.3214772
-18.5   -646.6016049
-17.5   -683.4637841
-16.5   -649.8121364
-15.5   -616.4297769
-14.5   -609.9639983
-13.5   -534.5818772
-12.5   -532.2347152
-11.5   -452.9222271
-10.5   -427.6525318
-9.5    -380.3710984
-8.5    -322.5516672
-7.5    -294.1208624
-6.5    -222.1675481
-5.5    -202.2179342
-4.5    -165.122709
-3.5    -134.827559
-2.5    -88.25392126
-1.5    -66.0446787
-0.5    -52.03853651
0.5 -35.01795243
1.5 -18.27307888
2.5 4.200002613
3.5 31.46742774
4.5 65.02174186
5.5 113.4098161
6.5 132.8355363
7.5 115.0080076
8.5 124.3832919

在我看来它像一个 sigmoidal 函数,但我找不到适合数据的正确自定义类型方程。我尝试了以下方法,但它错过了上限值。我可以使用哪种类型的方程式?

谢谢

【问题讨论】:

  • 只有当你有一个模型,如果你知道这个函数应该与现实相匹配,拟合一个特定的函数才有用。如果拟合不佳,那是因为您的现实模型是错误的,或者是因为测量中的噪声或偏差。在这一点上,改变你的模型将是错误的科学方法,你需要在开始测量之前建立它。如果您没有模型,并且只想将任何函数拟合到您的数据中,请尝试拟合多项式。从第三个订单开始,然后增加订单,直到您对结果感到满意。

标签: matlab curve-fitting curve sigmoid


【解决方案1】:

简单的线性拟合(蓝色)比逻辑拟合(石灰)更好:

这是由于模型 y(x)=a / (1 + exp(b * x) + c)

对于这个模型,对于大 x,y(x) 趋于 0,这与数据不一致:显然,对于大 x,y(x) 大于 0。

代替三参数逻辑函数,试试四参数逻辑函数:y(x) = K + a / ( 1 + exp(b * x) + c)

更重要的是,点的形状让人联想到双重逻辑 y(x) = K + a / (1 + exp(b * x) + c) + A / (1 + exp(B * x) + C) 但是参数太多使得非线性拟合过程变得困难。

或者在等价形式的双逻辑函数上(用不同的符号书写):

不过,我同意 Cris Luengo 对主要问题的大部分评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2015-06-20
    相关资源
    最近更新 更多