Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MATLAB将sigmoid拟合到我的数据_Matlab_Curve Fitting_Data Fitting - Fatal编程技术网

使用MATLAB将sigmoid拟合到我的数据

使用MATLAB将sigmoid拟合到我的数据,matlab,curve-fitting,data-fitting,Matlab,Curve Fitting,Data Fitting,我有很多数据,我认为可以将其与乙状结肠相匹配(这种想法基于我的视力,而不是数学公式) 我怎样才能找到对我的数据具有统计显著解释力的最佳sigmoid参数形式 谢谢 您可以做的一件大事是使用Matlab中的“曲线拟合”应用程序。您可以在应用程序的“数学、统计和优化”部分找到它 在那里,你可以选择你的x和y数据,以及你想要适合它们的函数(你可以输入自定义方程,比如sigmoid) 然后,您可以在绘图上看到拟合结果,并显示拟合参数 如果您对结果感到满意,并且希望在代码中使用它们,只需点击“文件”选项卡

我有很多数据,我认为可以将其与乙状结肠相匹配(这种想法基于我的视力,而不是数学公式)

我怎样才能找到对我的数据具有统计显著解释力的最佳sigmoid参数形式


谢谢

您可以做的一件大事是使用Matlab中的“曲线拟合”应用程序。您可以在应用程序的“数学、统计和优化”部分找到它

在那里,你可以选择你的x和y数据,以及你想要适合它们的函数(你可以输入自定义方程,比如sigmoid)

然后,您可以在绘图上看到拟合结果,并显示拟合参数

如果您对结果感到满意,并且希望在代码中使用它们,只需点击“文件”选项卡下的“生成代码”。 你可以在我拍摄的这个截图中看到细节。按下“生成代码”按钮后,matlab将创建一个函数,该函数将给出相同的结果。在这种情况下,我喜欢做的只是复制我需要的部件:

 enter code here
 [xData, yData] = prepareCurveData( x, y );

 % Set up fittype and options.
ft = fittype( 'a/(1+exp(-b*x))', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0.957166948242946 0.485375648722841];

% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );

如您所见,matlab添加了必要的细节,现在您可以使用fitresult访问拟合参数。例如->fitresult.a

如果设置正确,多项式比率(等次)可以非常好地拟合S形,并且可以确保分母在近似范围内没有零。这可能有些过火,但根据您的问题很难说。您可以尝试使用lsqnonlin来复制Check out Matlab的fit()函数,并发布一些数据和您尝试过的内容。Matlab还有一个内置的Sigmoid隶属函数,可以用作拟合函数。您也可以尝试使用错误函数(erf())。请注意,代码中的fittype与图像中的fittype不对应。因为图像中的fittype是一个sigmoid(
a/(1+exp(-bx)
),而代码是一个指数(
a+(b-a)*exp(-c*x)
)@lhcgeneva抱歉,我的错误。我的编辑本应纠正上述错误,但被拒绝为编辑,因为显然,未经您的批准,修改太多;)。所以我建议你还是保持原样吧。除此之外,还有一个错误,因为您的乙状结肠只有两个参数(a和b),但您给了它三个起点,您应该删除其中一个。@Adriaan非常感谢您的解释!我希望有一天能成为这个社区中有用的一员