В этом примере показано, как работать с посадкой кривой.
load census curvefit = fit(cdate,pop,'poly3','normalize','on')
curvefit =
Linear model Poly3:
curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
where x is normalized by mean 1890 and std 62.05
Coefficients (with 95% confidence bounds):
p1 = 0.921 (-0.9743, 2.816)
p2 = 25.18 (23.57, 26.79)
p3 = 73.86 (70.33, 77.39)
p4 = 61.74 (59.69, 63.8)
На выходе отображается уравнение аппроксимированной модели, коэффициенты аппроксимации и доверительные границы для коэффициентов аппроксимации.
plot(curvefit,cdate,pop)

Постройте график соответствия остатков.
plot(curvefit,cdate,pop,'Residuals')
Постройте график прогнозируемых границ по посадке.
plot(curvefit,cdate,pop,'predfunc')
Вычислить вписывание в определенной точке, указав значение для x , используя эту форму: y = fittedmodel(x).
curvefit(1991)
ans = 252.6690
Оцените модель в векторе значений для экстраполяции к 2050 году.
xi = (2000:10:2050).'; curvefit(xi)
ans = 6×1
276.9632
305.4420
335.5066
367.1802
400.4859
435.4468
Получить границы прогнозирования для этих значений.
ci = predint(curvefit,xi)
ci = 6×2
267.8589 286.0674
294.3070 316.5770
321.5924 349.4208
349.7275 384.6329
378.7255 422.2462
408.5919 462.3017
Постройте график интервалов аппроксимации и прогнозирования в экстраполированном диапазоне аппроксимации. По умолчанию аппроксимация выводится на печать по всему диапазону данных. Для просмотра значений, экстраполированных из аппроксимации, перед выводом аппроксимации установите верхний предел оси X равным 2050. Для построения графика интервалов прогнозирования используйте predobs или predfun в качестве типа графика.
plot(cdate,pop,'o') xlim([1900,2050]) hold on plot(curvefit,'predobs') hold off

Введите имя подгонки для отображения уравнения модели, коэффициентов подгонки и доверительных границ для коэффициентов подгонки.
curvefit
curvefit =
Linear model Poly3:
curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
where x is normalized by mean 1890 and std 62.05
Coefficients (with 95% confidence bounds):
p1 = 0.921 (-0.9743, 2.816)
p2 = 25.18 (23.57, 26.79)
p3 = 73.86 (70.33, 77.39)
p4 = 61.74 (59.69, 63.8)
Чтобы получить только уравнение модели, используйте formula.
formula(curvefit)
ans = 'p1*x^3 + p2*x^2 + p3*x + p4'
Укажите коэффициент по имени.
p1 = curvefit.p1
p1 = 0.9210
p2 = curvefit.p2
p2 = 25.1834
Получить все имена коэффициентов. Посмотрите на уравнение посадки (например, f(x) = p1*x^3+... ), чтобы увидеть модельные термины для каждого коэффициента.
coeffnames(curvefit)
ans = 4x1 cell
{'p1'}
{'p2'}
{'p3'}
{'p4'}
Получить все значения коэффициентов.
coeffvalues(curvefit)
ans = 1×4
0.9210 25.1834 73.8598 61.7444
Используйте доверительные границы коэффициентов, чтобы оценить и сравнить соответствия. Доверительные границы коэффициентов определяют их точность. Границы, которые находятся далеко друг от друга, указывают на неопределенность. Если границы пересекают ноль для линейных коэффициентов, это означает, что нельзя быть уверенным, что эти коэффициенты отличаются от нуля. Если у некоторых модельных членов коэффициенты равны нулю, то они не помогают с посадкой.
confint(curvefit)
ans = 2×4
-0.9743 23.5736 70.3308 59.6907
2.8163 26.7931 77.3888 63.7981
Чтобы получить статистику соответствия в командной строке, можно выполнить одно из следующих действий:
Откройте приложение «Фитинг кривой» и выберите команду «Вписать» > «Сохранить в рабочую область», чтобы экспортировать в рабочую область подгонку и точность подгонки.
Укажите gof выходной аргумент с использованием fit функция.
Повторно создайте вписку, задающую gof и выводят аргументы для получения статистики соответствия и информации алгоритма подгонки.
[curvefit,gof,output] = fit(cdate,pop,'poly3','normalize','on')
curvefit =
Linear model Poly3:
curvefit(x) = p1*x^3 + p2*x^2 + p3*x + p4
where x is normalized by mean 1890 and std 62.05
Coefficients (with 95% confidence bounds):
p1 = 0.921 (-0.9743, 2.816)
p2 = 25.18 (23.57, 26.79)
p3 = 73.86 (70.33, 77.39)
p4 = 61.74 (59.69, 63.8)
gof = struct with fields:
sse: 149.7687
rsquare: 0.9988
dfe: 17
adjrsquare: 0.9986
rmse: 2.9682
output = struct with fields:
numobs: 21
numparam: 4
residuals: [21x1 double]
Jacobian: [21x4 double]
exitflag: 1
algorithm: 'QR factorization and solve'
iterations: 1
Постройте гистограмму остатков, чтобы найти примерно нормальное распределение.
histogram(output.residuals,10)

plot(curvefit,cdate,pop,'fit','residuals') legend Location SouthWest subplot(2,1,1) legend Location NorthWest

Перечислите все методы, которые можно использовать с посадкой.
methods(curvefit)
Methods for class cfit: argnames confint formula numcoeffs setoptions category dependnames indepnames plot type cfit differentiate integrate predint coeffnames feval islinear probnames coeffvalues fitoptions numargs probvalues
Используйте help для получения информации об использовании метода подгонки.
help cfit/differentiate DIFFERENTIATE Differentiate a fit result object.
DERIV1 = DIFFERENTIATE(FITOBJ,X) differentiates the model FITOBJ at the
points specified by X and returns the result in DERIV1. FITOBJ is a Fit
object generated by the FIT or CFIT function. X is a vector. DERIV1 is
a vector with the same size as X. Mathematically speaking, DERIV1 =
D(FITOBJ)/D(X).
[DERIV1,DERIV2] = DIFFERENTIATE(FITOBJ, X) computes the first and
second derivatives, DERIV1 and DERIV2 respectively, of the model
FITOBJ.
See also CFIT/INTEGRATE, FIT, CFIT.