使sigmoid适合数据

lol*_*ter 10 matlab curve-fitting

有许多曲线拟合和插值工具,如polyfit(甚至我在这里找到的这个漂亮的logfit工具箱),但我似乎无法找到任何适合sigmoid我的xy数据的函数.

这样的工具是存在还是我需要自己制作?

Eit*_*n T 13

如果你已经安装了统计工具箱,您可以使用非线性回归nlinfit:

sigfunc = @(A, x)(A(1) ./ (A(2) + exp(-x)));
A0 = ones(size(A)); %// Initial values fed into the iterative algorithm
A_fit = nlinfit(x, y, sigfunc, A0);
Run Code Online (Sandbox Code Playgroud)

这里sigfunc只是一个sigmoid函数的例子,它A是拟合系数的向量.


hor*_*ler 9

nlinfit,尤其gatool是这个问题的大锤子.S形不是特定的功能.最常见的是它与逻辑函数相同(通常也是最有效的计算):

y = 1./(1+exp(-x));
Run Code Online (Sandbox Code Playgroud)

或者是一般化的逻辑.但是所有形状的曲线都可以具有S形.如果您知道您的数据是否与特定数据相对应,则可以改进拟合并且可以应用更有效的方法.例如,误差函数(erf)具有S形形状并显示在正态分布CDF中.如果您知道您的数据是高斯过程的结果(即数据是CDF)并且您拥有Stats工具箱,则可以使用该功能.该功能基于最大似然估计(MLE).如果你最终需要编写自定义拟合函数 - 比如说,出于性能原因 - 我会研究你想要适合的特定形式的sigmoid的MLE技术.normfit