下面程序妳參考壹下:
% curvefitLogistic.m
% 在實際應用時, 只有在確認所得的生物數據具有 logistic 曲線規律, 擬合的結果才
% 有意義,下面這組數據具有 logistic 曲線規律!
N=[3929 5308 7240 9638 12866 17069 23192 31443 38558 50156 62948 ...
75995 91972 105711 122775 131669 150697 179323 203185 226500];
t=1790:10:1980;
% 畫原始數據圖
plot(t,N,t,N,'r*')
hold on
% Logistic 函數的構造
func = @(beta,x) beta(1)./(1+(beta(1)/N(1)-1)*exp(-beta(2)*(x-1790)));
% 關鍵:尋優初值的選取:beta0(1)為函數的最大值,beta0(1)盡可能小,這裏直接取 0
% 因為:現在在計算機上進行 logistic 曲線擬合, 多采用 Guass壹Newton 算法和 Guass-
% Newton 的改進算法 Marquardt 法, 這兩種算法只有在選取壹組與實際值較接近的初
% 值K, a, b 時, 叠代過程的收斂性才好, 即找到的K 、a 、b 的值能使 R 值最小!
beta0 = [max(N) 0];
% lsqcurvefit 調用
[beta,resnorm,residual,exitflag,output]= lsqcurvefit(func,beta0,t,N);