有许多曲线拟合和插值工具,比如polyfit (甚至是我找到的这个漂亮的logfit工具箱here),但我似乎找不到任何适合我的x-y数据的sigmoid函数。
这样的工具是否存在,或者我是否需要自己制作?
发布于 2013-05-13 01:04:18
如果已安装统计工具箱,则可以在nlinfit中使用nonlinear regression
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);这里sigfunc只是一个sigmoid函数的例子,A是拟合系数的向量。
发布于 2013-05-13 04:31:52
nlinfit,尤其是gatool,是解决这个问题的大力士。sigmoid不是一个特定的函数。通常认为它与逻辑函数相同(通常也是计算效率最高的函数):
y = 1./(1+exp(-x));或者是广义逻辑。但是所有形式的曲线都可以有sigmoidal shapes。如果您知道您的数据是否与某个特定数据相对应,则可以改进拟合,并可以应用更有效的方法。例如,error function (erf)具有S形形状,并显示在normal distribution的CDF中。如果您知道您的数据是高斯过程的结果(即,数据是CDF),并且您有统计工具箱,则可以使用normfit函数。此函数基于maximum likelihood estimation (MLE)。如果您最终需要编写自定义拟合函数--比如说,出于性能原因--我将针对您想要拟合的特定形式的sigmoid研究MLE技术。
发布于 2013-05-13 01:04:26
我建议你使用MATLAB的Global Optimization Toolbox,特别是Genetic Algorithm Solver,你可以通过遗传算法优化sigmoid函数的参数来解决你的问题。它有一个易于使用的GUI。
您可以使用gatool调用Genetic Algorithm Solver的图形用户界面:

https://stackoverflow.com/questions/16509696
复制相似问题