Настраиваемая нелинейная перепись Подбора кривой

Этот пример показывает аппроксимацию пользовательского уравнения к данным переписи, определение границ, коэффициентов и зависящего от задачи параметра.

Загрузите и постройте график данных в census.mat:

load census
plot(cdate,pop,'o')
hold on

Figure contains an axes. The axes contains an object of type line.

Создайте структуру опций аппроксимации и объект типа аппроксимации для пользовательской нелинейной модели y = a (x-b) n, где a и b являются коэффициентами, и n является параметром, зависящим от задачи. Смотрите страницу функции типа fittype для получения дополнительной информации о параметрах, зависящих от проблемы.

s = fitoptions('Method','NonlinearLeastSquares',...
               'Lower',[0,0],...
               'Upper',[Inf,max(cdate)],...
               'Startpoint',[1 1]);
f = fittype('a*(x-b)^n','problem','n','options',s);

Подгонка данных с помощью опций аппроксимации и значения n = 2:

[c2,gof2] = fit(cdate,pop,f,'problem',2)
c2 = 
     General model:
     c2(x) = a*(x-b)^n
     Coefficients (with 95% confidence bounds):
       a =    0.006092  (0.005743, 0.006441)
       b =        1789  (1784, 1793)
     Problem parameters:
       n =           2
gof2 = struct with fields:
           sse: 246.1543
       rsquare: 0.9980
           dfe: 19
    adjrsquare: 0.9979
          rmse: 3.5994

Подгонка данных с помощью опций аппроксимации и значения n = 3:

[c3,gof3] = fit(cdate,pop,f,'problem',3)
c3 = 
     General model:
     c3(x) = a*(x-b)^n
     Coefficients (with 95% confidence bounds):
       a =   1.359e-05  (1.245e-05, 1.474e-05)
       b =        1725  (1718, 1731)
     Problem parameters:
       n =           3
gof3 = struct with fields:
           sse: 232.0058
       rsquare: 0.9981
           dfe: 19
    adjrsquare: 0.9980
          rmse: 3.4944

Постройте график результатов подгонки и данных:

plot(c2,'m')
plot(c3,'c')
legend( 'fit with n=2', 'fit with n=3' )

Figure contains an axes. The axes contains 3 objects of type line. These objects represent fit with n=2, fit with n=3, fitted curve.