2015-11-02 202 views
3

我有很多數據,我認爲可以將它適用於sigmoid(基於我的視覺而不是數學公式)。使用MATLAB對我的數據擬合sigmoid

如何找到具有統計學意義的最佳S形數據解釋能力的參數形式?

謝謝!

+0

如果設置正確,並且可以確保分母在近似值範圍內沒有零,多項式(等度)的比率可以非常好地擬合S形。這可能是過度的,但很難說根據你的問題。 – mathematician1975

+1

你可以嘗試與lsqnonlin http://au.mathworks.com/help/optim/ug/lsqnonlin.html – gregswiss

+1

可能重複的[MATLAB擬合數據給用戶給定函數](http://stackoverflow.com/questions/12970043 /數據到用戶給定函數的matlab擬合) – tashuhka

回答

3

你可以做的一件偉大的事情是在Matlab中使用「曲線擬合」應用程序。你可以在APPS的「數學,統計和優化」部分找到它。

在那裏,您可以選擇您的x和y數據以及您希望適合它們的功能(您可以輸入自定義方程式,例如S形)。

然後,您可以在一個圖上看到擬合結果,並顯示擬合參數。

如果您對結果感到滿意並且想要在代碼中使用它們,只需點擊File選項卡下的生成代碼即可。 See Here 你可以在截圖中看到細節。按下生成代碼按鈕後,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

+1

只要小心,代碼和圖像中的fittype不對應。 – lhcgeneva

+0

@lhcgeneva爲什麼不呢? – HoomanShan

+0

因爲你的圖像中的fittype是sigmoid('a /(1 + exp(-bx)'),而你的代碼是指數('a +(ba)* exp(-c * x)') – lhcgeneva