在 Matlab 的曲线拟合工具中使用哪种类型的方程?

Which type of equation to use in the curve fitting tool in Matlab?

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

-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

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

谢谢

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

这是由于模型 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 对主要问题的大部分评论。