Оцените поверхностную подгонку

Этот пример показывает, как работать с поверхностной подгонкой.

Загрузите данные и соответствуйте полиномиальной поверхности

load franke;
surffit = fit([x,y],z,'poly23','normalize','on')
     Linear model Poly23:
     surffit(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y 
                    + p12*x*y^2 + p03*y^3
       where x is normalized by mean 1982 and std 868.6
       and where y is normalized by mean 0.4972 and std 0.2897
     Coefficients (with 95% confidence bounds):
       p00 =      0.4253  (0.3928, 0.4578)
       p10 =      -0.106  (-0.1322, -0.07974)
       p01 =     -0.4299  (-0.4775, -0.3822)
       p20 =     0.02104  (0.001457, 0.04062)
       p11 =     0.07153  (0.05409, 0.08898)
       p02 =    -0.03084  (-0.05039, -0.01129)
       p21 =     0.02091  (0.001372, 0.04044)
       p12 =     -0.0321  (-0.05164, -0.01255)
       p03 =      0.1216  (0.09929, 0.1439)

Вывод отображает уравнение подобранной модели, подходящие коэффициенты и доверительные границы для подходящих коэффициентов.

Постройте подгонку, данные, невязки и границы прогноза

plot(surffit,[x,y],z)

Постройте подгонку невязок.

plot(surffit,[x,y],z,'Style','Residuals')

Постройте границы прогноза на подгонке.

plot(surffit,[x,y],z,'Style','predfunc')

Оцените подгонку в заданной точке

Оцените подгонку в отдельном моменте путем определения значения для x и y, использования этой формы: z = fittedmodel(x,y).

surffit(1000,0.5)
ans = 0.5673

Оцените подходящие значения во многих точках

xi = [500;1000;1200];
yi = [0.7;0.6;0.5];
surffit(xi,yi)
ans = 3×1

    0.3771
    0.4064
    0.5331

Получите границы прогноза на тех значениях.

[ci, zi] = predint(surffit,[xi,yi])
ci = 3×2

    0.0713    0.6829
    0.1058    0.7069
    0.2333    0.8330

zi = 3×1

    0.3771
    0.4064
    0.5331

Получите образцовое уравнение

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

surffit
     Linear model Poly23:
     surffit(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y 
                    + p12*x*y^2 + p03*y^3
       where x is normalized by mean 1982 and std 868.6
       and where y is normalized by mean 0.4972 and std 0.2897
     Coefficients (with 95% confidence bounds):
       p00 =      0.4253  (0.3928, 0.4578)
       p10 =      -0.106  (-0.1322, -0.07974)
       p01 =     -0.4299  (-0.4775, -0.3822)
       p20 =     0.02104  (0.001457, 0.04062)
       p11 =     0.07153  (0.05409, 0.08898)
       p02 =    -0.03084  (-0.05039, -0.01129)
       p21 =     0.02091  (0.001372, 0.04044)
       p12 =     -0.0321  (-0.05164, -0.01255)
       p03 =      0.1216  (0.09929, 0.1439)

Чтобы получить только образцовое уравнение, используйте formula.

formula(surffit)
ans = 
'p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3'

Получите содействующие имена и значения

Задайте коэффициент по наименованию.

p00 = surffit.p00
p00 = 0.4253
p03 = surffit.p03
p03 = 0.1216

Получите все содействующие имена. Посмотрите на подходящее уравнение (например, f(x,y) = p00 + p10*x...), чтобы видеть образцовые условия для каждого коэффициента.

coeffnames(surffit)
ans = 9x1 cell array
    {'p00'}
    {'p10'}
    {'p01'}
    {'p20'}
    {'p11'}
    {'p02'}
    {'p21'}
    {'p12'}
    {'p03'}

Получите все содействующие значения.

coeffvalues(surffit)
ans = 1×9

    0.4253   -0.1060   -0.4299    0.0210    0.0715   -0.0308    0.0209   -0.0321    0.1216

Получите доверительные границы на коэффициентах

Используйте доверительные границы на коэффициентах, чтобы помочь вам оценить и сравнить подгонки. Доверительные границы на коэффициентах определяют свою точность. Границы, которые являются далеко друг от друга, указывают на неуверенность. Если перекрестный нуль границ для линейных коэффициентов, это означает, что вы не можете быть уверены, что эти коэффициенты отличаются от нуля. Если некоторые образцовые условия имеют коэффициенты нуля, то они не помогают с подгонкой.

confint(surffit)
ans = 2×9

    0.3928   -0.1322   -0.4775    0.0015    0.0541   -0.0504    0.0014   -0.0516    0.0993
    0.4578   -0.0797   -0.3822    0.0406    0.0890   -0.0113    0.0404   -0.0126    0.1439

Найдите методы

Перечислите каждый метод, который можно использовать с подгонкой.

methods(surffit)
Methods for class sfit:

argnames       dependnames    indepnames     predint        sfit           
category       differentiate  islinear       probnames      type           
coeffnames     feval          numargs        probvalues     
coeffvalues    fitoptions     numcoeffs      quad2d         
confint        formula        plot           setoptions     

Используйте команду help, чтобы узнать, как использовать подходящий метод.

help sfit/quad2d
 QUAD2D  Numerically integrate a surface fit object.
    Q = QUAD2D(FO, A, B, C, D) approximates the integral of the surface fit
    object FO over the planar region A <= x <= B and C(x) <= y <= D(x). C and D
    may each be a scalar, a function handle or a curve fit (CFIT) object.
 
    [Q,ERRBND] = QUAD2D(...) also returns an approximate upper bound on the
    absolute error, ERRBND.
 
    [Q,ERRBND] = QUAD2D(FUN,A,B,C,D,PARAM1,VAL1,PARAM2,VAL2,...) performs
    the integration with specified values of optional parameters. 
 
    See QUAD2D for details of the upper bound and the optional parameters. 
      
    See also: QUAD2D, FIT, SFIT, CFIT.
Для просмотра документации необходимо авторизоваться на сайте