有许多曲线拟合和插值工具,例如 polyfit(甚至是我在这里找到的这个不错的 logfit 工具箱),但我似乎找不到任何适合sigmoid
我的 xy 数据的函数。
这样的工具是否存在,还是我需要自己制作?
有许多曲线拟合和插值工具,例如 polyfit(甚至是我在这里找到的这个不错的 logfit 工具箱),但我似乎找不到任何适合sigmoid
我的 xy 数据的函数。
这样的工具是否存在,还是我需要自己制作?
nlinfit
, 尤其是gatool
, 是解决这个问题的大锤。sigmoid 不是一个特定的函数。最常见的是它与逻辑函数相同(通常也是最有效的计算):
y = 1./(1+exp(-x));
或广义的逻辑。但是各种曲线都可以是S 形。如果您知道您的数据是否与一个特定的数据相对应,则可以改进拟合并应用更有效的方法。例如,误差函数( erf
) 具有 S 形形状并出现在正态分布的CDF中。如果您知道您的数据是高斯过程的结果(即数据是 CDF)并且您拥有 Stats 工具箱,则可以使用该函数。该函数基于最大似然估计normfit
(MLE)。如果您最终需要编写自定义拟合函数 - 例如,出于性能原因 - 我会针对您想要拟合的特定形式的 sigmoid 研究 MLE 技术。
我建议您使用 MATLAB 的Global Optimization Toolbox,特别是Genetic Algorithm Solver,您可以通过遗传算法优化(=找到最适合您的数据)sigmoid 函数的参数来解决您的问题。它有一个易于使用的 GUI。
遗传算法求解器的GUI,您可以使用以下命令调用它gatool
: