Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

fit

곡선 또는 곡면을 데이터에 피팅

설명

예제

fitobject = fit(x,y,fitType)fitType으로 지정된 모델을 사용하여 xy 데이터에 대한 피팅을 만듭니다.

예제

fitobject = fit([x,y],z,fitType)은 벡터 x, y, z 데이터에 대한 곡면 피팅을 만듭니다.

예제

fitobject = fit(x,y,fitType,fitOptions)fitOptions 객체로 지정된 알고리즘 옵션을 사용하여 데이터에 대한 피팅을 만듭니다.

예제

fitobject = fit(x,y,fitType,Name=Value)는 하나 이상의 Name=Value 쌍 인수로 지정된 추가 옵션과 함께 라이브러리 모델 fitType을 사용하여 데이터에 대한 피팅을 만듭니다. 지정된 라이브러리 모델에 대해 사용 가능한 속성 이름과 디폴트 값을 표시하려면 fitoptions를 사용하십시오.

예제

[fitobject,gof] = fit(x,y,fitType)은 적합도 통계량을 구조체 gof로 반환합니다.

예제

[fitobject,gof,output] = fit(x,y,fitType)은 구조체 output에 피팅 알고리즘 정보를 반환합니다.

예제

모두 축소

census 샘플 데이터 세트를 불러옵니다.

load census;

벡터 pop와 벡터 cdate는 각각 모집단 크기와 인구 조사를 실시한 연도에 대한 데이터를 포함하고 있습니다.

2차 곡선을 모집단 데이터에 피팅합니다.

f=fit(cdate,pop,'poly2')
f = 
     Linear model Poly2:
     f(x) = p1*x^2 + p2*x + p3
     Coefficients (with 95% confidence bounds):
       p1 =    0.006541  (0.006124, 0.006958)
       p2 =      -23.51  (-25.09, -21.93)
       p3 =   2.113e+04  (1.964e+04, 2.262e+04)

f는 95% 신뢰한계의 계수 추정값을 비롯한 피팅 결과를 포함합니다.

데이터의 산점도 플롯과 함께 f의 피팅을 플로팅합니다.

plot(f,cdate,pop)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

이 플롯은 피팅된 곡선이 모집단 데이터를 가깝게 따라가고 있음을 보여줍니다.

franke 샘플 데이터 세트를 불러옵니다.

load franke

벡터 x, y, z는 추가된 잡음과 스케일링이 있는 Franke의 이변량 테스트 함수에서 생성된 데이터를 포함합니다.

다항식 곡면을 데이터에 피팅합니다. x 항에 대해 차수 2를 지정하고 y 항에 대해 차수 3을 지정합니다.

sf = fit([x, y],z,'poly23')
     Linear model Poly23:
     sf(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
     Coefficients (with 95% confidence bounds):
       p00 =       1.118  (0.9149, 1.321)
       p10 =  -0.0002941  (-0.000502, -8.623e-05)
       p01 =       1.533  (0.7032, 2.364)
       p20 =  -1.966e-08  (-7.084e-08, 3.152e-08)
       p11 =   0.0003427  (-0.0001009, 0.0007863)
       p02 =      -6.951  (-8.421, -5.481)
       p21 =   9.563e-08  (6.276e-09, 1.85e-07)
       p12 =  -0.0004401  (-0.0007082, -0.0001721)
       p03 =       4.999  (4.082, 5.917)

sf는 95% 신뢰한계의 계수 추정값을 비롯한 피팅 결과를 포함합니다.

데이터의 산점도 플롯과 함께 sf의 피팅을 플로팅합니다.

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

Figure contains an axes object. The axes object contains 2 objects of type surface, line. One or more of the lines displays its values using only markers

franke 데이터를 불러와서 MATLAB® 테이블로 변환합니다.

load franke
T = table(x,y,z);

테이블의 변수를 fit 함수에 대한 입력값으로 지정하고 피팅 결과를 플로팅합니다.

f = fit([T.x, T.y],T.z,'linearinterp');
plot( f, [T.x, T.y], T.z )

Figure contains an axes object. The axes object contains 2 objects of type surface, line. One or more of the lines displays its values using only markers

데이터를 불러와서 플로팅하고, fittype 함수와 fitoptions 함수를 사용하여 피팅 옵션과 피팅 유형을 만든 다음, 피팅을 만들고 플로팅합니다.

census.mat의 데이터를 불러와서 플로팅합니다.

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

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

사용자 지정 비선형 모델 y=a(x-b)n에 대한 fit options 객체와 피팅 유형을 만듭니다. 여기서 ab는 계수이고 n은 문제 종속적인 파라미터입니다.

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

피팅 옵션과 값 n = 2를 사용하여 데이터를 피팅합니다.

[curve2,gof2] = fit(cdate,pop,ft,'problem',2)
curve2 = 
     General model:
     curve2(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을 사용하여 데이터를 피팅합니다.

[curve3,gof3] = fit(cdate,pop,ft,'problem',3)
curve3 = 
     General model:
     curve3(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

피팅 결과를 데이터와 함께 플로팅합니다.

hold on
plot(curve2,'m')
plot(curve3,'c')
legend('Data','n=2','n=3')
hold off

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent Data, n=2, n=3.

carbon12alpha 핵반응 샘플 데이터 세트를 불러옵니다.

load carbon12alpha

angle은 방출 각도(단위: 라디안)로 구성된 벡터입니다. countsangle의 각도에 대응하는 원시 알파 입자 개수로 구성된 벡터입니다.

각도에 대해 플로팅된 개수의 산점도 플롯을 표시합니다.

scatter(angle,counts)

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

산점도 플롯은 각도가 04.5 사이에서 증가함에 따라 개수가 진동함을 보여줍니다. 다항식 모델을 데이터에 피팅하려면 fitType 입력 인수를 "poly#"로 지정합니다. 여기서 #는 1에서 9 사이의 정수입니다. 최대 9차까지 모델을 피팅할 수 있습니다. 자세한 내용은 곡선과 곡면 피팅 라이브러리 모델 목록 항목을 참조하십시오.

5차, 7차 및 9차 다항식을 핵반응 데이터에 피팅합니다. 각 피팅에 대한 적합도 통계량을 반환합니다.

[f5,gof5] = fit(angle,counts,"poly5");
[f7,gof7] = fit(angle,counts,"poly7");
[f9,gof9] = fit(angle,counts,"poly9");

linspace 함수를 사용하여 04.5 사이에 있는 쿼리 점으로 구성된 벡터를 생성합니다. 쿼리 점에서 다항식 피팅을 평가한 후 핵반응 데이터와 함께 이를 플로팅합니다.

xq = linspace(0,4.5,1000);

figure
hold on
scatter(angle,counts,"k")
plot(xq,f5(xq))
plot(xq,f7(xq))
plot(xq,f9(xq))
ylim([-100,550])
legend("original data","fifth-degree polynomial","seventh-degree polynomial","ninth-degree polynomial")

Figure contains an axes object. The axes object contains 4 objects of type scatter, line. These objects represent original data, fifth-degree polynomial, seventh-degree polynomial, ninth-degree polynomial.

플롯은 9차 다항식이 가장 근접하게 데이터를 따라가고 있음을 보여줍니다.

struct2table 함수를 사용하여 각 피팅에 대한 적합도 통계량을 표시합니다.

gof = struct2table([gof5 gof7 gof9],RowNames=["f5" "f7" "f9"])
gof=3×5 table
             sse        rsquare    dfe    adjrsquare     rmse 
          __________    _______    ___    __________    ______

    f5    1.0901e+05    0.54614    18      0.42007       77.82
    f7         32695    0.86387    16      0.80431      45.204
    f9        3660.2    0.98476    14      0.97496      16.169

9차 다항식 피팅의 오차 제곱합(SSE)은 5차 다항식 피팅과 7차 다항식 피팅의 SSE보다 작습니다. 이 결과는 9차 다항식이 가장 근접하게 데이터를 따라가고 있음을 입증합니다.

census 샘플 데이터 세트를 불러옵니다. 3차 다항식을 피팅하고 Normalize(정규화) 옵션과 Robust 피팅 옵션을 지정합니다.

load census;
f = fit(cdate,pop,'poly3','Normalize','on','Robust','Bisquare')
f = 
     Linear model Poly3:
     f(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.4619  (-1.895, 0.9707)
       p2 =       25.01  (23.79, 26.22)
       p3 =       77.03  (74.37, 79.7)
       p4 =       62.81  (61.26, 64.37)

피팅을 플로팅합니다.

plot(f,cdate,pop)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

파일에 함수를 정의하고 이를 사용하여 피팅 유형을 만든 후 곡선을 피팅합니다.

함수를 MATLAB® 파일에 정의합니다.

function y = piecewiseLine(x,a,b,c,d,k)
% PIECEWISELINE   A line made of two pieces
% that is not continuous.

y = zeros(size(x));

% This example includes a for-loop and if statement
% purely for example purposes.
for i = 1:length(x)
    if x(i) < k,
        y(i) = a + b.* x(i);
    else
        y(i) = c + d.* x(i);
    end
end
end

파일을 저장합니다.

일부 데이터를 정의하고, 함수 piecewiseLine을 지정하여 피팅 유형을 만들고, 피팅 유형 ft를 사용하여 피팅을 만들고, 결과를 플로팅합니다.

x = [0.81;0.91;0.13;0.91;0.63;0.098;0.28;0.55;...
0.96;0.96;0.16;0.97;0.96];
y = [0.17;0.12;0.16;0.0035;0.37;0.082;0.34;0.56;...
0.15;-0.046;0.17;-0.091;-0.071];
ft = fittype( 'piecewiseLine( x, a, b, c, d, k )' )
f = fit( x, y, ft, 'StartPoint', [1, 0, 1, 0, 0.5] )
plot( f, x, y ) 

데이터를 불러와서 제외할 점을 지정하여 사용자 지정 수식을 피팅합니다. 결과를 플로팅합니다.

데이터를 불러와서 사용자 지정 수식과 몇몇 시작점을 정의합니다.

[x, y] = titanium;

gaussEqn = 'a*exp(-((x-b)/c)^2)+d'
gaussEqn = 
'a*exp(-((x-b)/c)^2)+d'
startPoints = [1.5 900 10 0.6]
startPoints = 1×4

    1.5000  900.0000   10.0000    0.6000

사용자 지정 수식과 시작점을 사용하여 2개의 피팅을 만들고, 인덱스 벡터와 표현식을 사용하여 2개의 제외된 점 집합을 정의합니다. Exclude를 사용하여 피팅에서 이상값을 제거합니다.

f1 = fit(x',y',gaussEqn,'Start', startPoints, 'Exclude', [1 10 25])
f1 = 
     General model:
     f1(x) = a*exp(-((x-b)/c)^2)+d
     Coefficients (with 95% confidence bounds):
       a =       1.493  (1.432, 1.554)
       b =       897.4  (896.5, 898.3)
       c =        27.9  (26.55, 29.25)
       d =      0.6519  (0.6367, 0.6672)
f2 = fit(x',y',gaussEqn,'Start', startPoints, 'Exclude', x < 800)
f2 = 
     General model:
     f2(x) = a*exp(-((x-b)/c)^2)+d
     Coefficients (with 95% confidence bounds):
       a =       1.494  (1.41, 1.578)
       b =       897.4  (896.2, 898.7)
       c =       28.15  (26.22, 30.09)
       d =      0.6466  (0.6169, 0.6764)

두 피팅을 모두 플로팅합니다.

plot(f1,x,y)
title('Fit with data points 1, 10, and 25 excluded')

Figure contains an axes object. The axes object with title Fit with data points 1, 10, and 25 excluded, xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

figure
plot(f2,x,y)
title('Fit with data points excluded such that x < 800')

Figure contains an axes object. The axes object with title Fit with data points excluded such that x < 800, xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

제외된 점을 변수로 정의한 다음 이를 fit 함수에 대한 입력값으로 제공할 수 있습니다. 다음 단계에서는 위 예제의 피팅을 다시 생성하여 데이터와 피팅뿐만 아니라 제외된 점도 플로팅할 수 있도록 합니다.

데이터를 불러와서 사용자 지정 수식과 몇몇 시작점을 정의합니다.

[x, y] = titanium;

gaussEqn = 'a*exp(-((x-b)/c)^2)+d'
gaussEqn = 
'a*exp(-((x-b)/c)^2)+d'
startPoints = [1.5 900 10 0.6]
startPoints = 1×4

    1.5000  900.0000   10.0000    0.6000

인덱스 벡터와 표현식을 사용하여 제외할 점 집합 2개를 정의합니다.

exclude1 = [1 10 25];
exclude2 = x < 800;

사용자 지정 수식, 시작점, 2개의 제외된 점 집합을 사용하여 2개의 피팅을 만듭니다.

f1 = fit(x',y',gaussEqn,'Start', startPoints, 'Exclude', exclude1);
f2 = fit(x',y',gaussEqn,'Start', startPoints, 'Exclude', exclude2);

두 피팅을 모두 플로팅하고 제외된 데이터를 강조 표시합니다.

plot(f1,x,y,exclude1)
title('Fit with data points 1, 10, and 25 excluded')

Figure contains an axes object. The axes object with title Fit with data points 1, 10, and 25 excluded, xlabel x, ylabel y contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent data, excluded data, fitted curve.

figure; 
plot(f2,x,y,exclude2)
title('Fit with data points excluded such that x < 800')

Figure contains an axes object. The axes object with title Fit with data points excluded such that x < 800, xlabel x, ylabel y contains 3 objects of type line. One or more of the lines displays its values using only markers These objects represent data, excluded data, fitted curve.

제외된 점이 있는 곡면 피팅 예로, 곡면 데이터를 불러와서 제외된 데이터를 지정하여 피팅을 만들고 플로팅합니다.

load franke
f1 = fit([x y],z,'poly23', 'Exclude', [1 10 25]);
f2 = fit([x y],z,'poly23', 'Exclude', z > 1);

figure
plot(f1, [x y], z, 'Exclude', [1 10 25]);
title('Fit with data points 1, 10, and 25 excluded')

Figure contains an axes object. The axes object with title Fit with data points 1, 10, and 25 excluded contains 3 objects of type surface, line. One or more of the lines displays its values using only markers

figure
plot(f2, [x y], z, 'Exclude', z > 1);
title('Fit with data points excluded such that z > 1')

Figure contains an axes object. The axes object with title Fit with data points excluded such that z > 1 contains 3 objects of type surface, line. One or more of the lines displays its values using only markers

membrane 함수와 randn 함수를 사용하여 잡음 있는 데이터를 생성합니다.

n = 41;
M = membrane(1,20)+0.02*randn(n);
[X,Y] = meshgrid(1:n);

행렬 M은 추가된 잡음이 있는 L 모양의 멤브레인에 대한 데이터를 포함하고 있습니다. 행렬 X와 행렬 YM의 대응하는 요소에 대한 행 인덱스 값과 열 인덱스 값을 각각 포함하고 있습니다.

데이터의 곡면 플롯을 표시합니다.

figure(1)
surf(X,Y,M)

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

플롯은 주름이 있는 L 모양의 멤브레인을 보여줍니다. 멤브레인의 주름은 데이터의 잡음으로 인해 발생합니다.

선형 보간을 사용하여 주름이 있는 멤브레인을 통과하도록 두 곡면을 피팅합니다. 첫 번째 곡면의 경우, 선형 외삽 방법을 지정합니다. 두 번째 곡면의 경우, 외삽 방법을 최근접이웃으로 지정합니다.

flinextrap = fit([X(:),Y(:)],M(:),"linearinterp",ExtrapolationMethod="linear");
fnearextrap = fit([X(:),Y(:)],M(:),"linearinterp",ExtrapolationMethod="nearest");

X 데이터와 Y 데이터의 볼록 껍질 외부에 있는 쿼리 점에서 피팅을 평가하기 위해 meshgrid 함수를 사용하여 외삽 방법 간의 차이를 조사합니다.

[Xq,Yq] = meshgrid(-10:50);

Zlin = flinextrap(Xq,Yq);
Znear = fnearextrap(Xq,Yq);

평가된 피팅을 플로팅합니다.

figure(2)
surf(Xq,Yq,Zlin)
title("Linear Extrapolation")
xlabel("X")
ylabel("Y")
zlabel("M")

Figure contains an axes object. The axes object with title Linear Extrapolation, xlabel X, ylabel Y contains an object of type surface.

figure(3)
surf(Xq,Yq,Znear)
title("Nearest Neighbor Extrapolation")
xlabel("X")
ylabel("Y")
zlabel("M")

Figure contains an axes object. The axes object with title Nearest Neighbor Extrapolation, xlabel X, ylabel Y contains an object of type surface.

선형 외삽 방법은 볼록 껍질의 외부에서 스파이크를 생성합니다. 스파이크를 형성하는 평면 부분은 볼록 껍질의 테두리에 있는 점의 기울기를 따라갑니다. 최근접이웃 외삽 방법은 테두리에 있는 데이터를 사용하여 곡면을 각 방향으로 확장합니다. 이 외삽 방법은 테두리를 모방하는 파형을 생성합니다.

평활화 스플라인 곡선을 피팅하고 적합도 통계량과 피팅 알고리즘에 대한 정보를 반환합니다.

enso 샘플 데이터 세트를 불러옵니다. enso 샘플 데이터 세트는 이스터 섬과 호주의 다윈 간의 월별 평균 대기압 차이에 대한 데이터를 포함하고 있습니다.

load enso;

평활화 스플라인 곡선을 month의 데이터와 pressure의 데이터에 피팅하고 적합도 통계량과 output 구조체를 반환합니다.

[curve,gof,output] = fit(month,pressure,"smoothingspline");

곡선을 피팅하는 데 사용된 데이터와 함께, 피팅된 곡선을 플로팅합니다.

plot(curve,month,pressure);
xlabel("Month");
ylabel("Pressure");

Figure contains an axes object. The axes object with xlabel Month, ylabel Pressure contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

x 데이터(month)에 대해 잔차를 플로팅합니다.

plot(curve,month,pressure,"residuals")
xlabel("Month")
ylabel("Residuals")

Figure contains an axes object. The axes object with xlabel Month, ylabel Residuals contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, zero line.

output 구조체에 있는 residuals 데이터를 사용하여 y 데이터(pressure)에 대해 잔차를 플로팅합니다. outputresiduals 필드에 액세스하려면 점 표기법을 사용합니다.

residuals = output.residuals;
plot( pressure,residuals,".")
xlabel("Pressure")
ylabel("Residuals")

Figure contains an axes object. The axes object with xlabel Pressure, ylabel Residuals contains a line object which displays its values using only markers.

지수 추세를 갖는 데이터를 생성하고, 지수 모델 곡선 피팅 라이브러리에 있는 첫 번째 방정식(단일 항 지수)을 사용하여 데이터를 피팅합니다. 결과를 플로팅합니다.

x = (0:0.2:5)';
y = 2*exp(-0.2*x) + 0.5*randn(size(x));
f = fit(x,y,'exp1');
plot(f,x,y)

Figure contains an axes object. The axes object with xlabel x, ylabel y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent data, fitted curve.

익명 함수를 사용하여 fit 함수로 다른 데이터를 보다 쉽게 전달할 수 있습니다.

익명 함수를 정의하기 전에 먼저 데이터를 불러오고 Emax1로 설정합니다.

data = importdata( 'OpioidHypnoticSynergy.txt' );
Propofol      = data.data(:,1);
Remifentanil  = data.data(:,2);
Algometry     = data.data(:,3);
Emax = 1;

모델 방정식을 익명 함수로 정의합니다.

Effect = @(IC50A, IC50B, alpha, n, x, y) ...
    Emax*( x/IC50A + y/IC50B + alpha*( x/IC50A )...
    .* ( y/IC50B ) ).^n ./(( x/IC50A + y/IC50B + ...
    alpha*( x/IC50A ) .* ( y/IC50B ) ).^n  + 1);

익명 함수 Effectfit 함수에 대한 입력값으로 사용하고 결과를 플로팅합니다.

AlgometryEffect = fit( [Propofol, Remifentanil], Algometry, Effect, ...
    'StartPoint', [2, 10, 1, 0.8], ...
    'Lower', [-Inf, -Inf, -5, -Inf], ...
    'Robust', 'LAR' )
plot( AlgometryEffect, [Propofol, Remifentanil], Algometry )

익명 함수와 피팅용 기타 사용자 지정 모델에 관한 다른 예제는 fittype 함수를 참조하십시오.

Upper, Lower, StartPoint 속성의 경우 계수 요소의 순서를 찾아야 합니다.

피팅 유형을 만듭니다.

ft = fittype('b*x^2+c*x+a');

coeffnames 함수를 사용하여 계수의 이름과 순서를 가져옵니다.

coeffnames(ft)
ans = 3x1 cell
    {'a'}
    {'b'}
    {'c'}

이것은 fittype을 사용하여 ft를 만들 때 사용한 표현식의 계수 순서와 다릅니다.

데이터를 불러오고 피팅을 만든 후 시작점을 설정합니다.

load enso
fit(month,pressure,ft,'StartPoint',[1,3,5])
ans = 
     General model:
     ans(x) = b*x^2+c*x+a
     Coefficients (with 95% confidence bounds):
       a =       10.94  (9.362, 12.52)
       b =   0.0001677  (-7.985e-05, 0.0004153)
       c =     -0.0224  (-0.06559, 0.02079)

이렇게 하면 계수에 초기값이 a = 1, b = 3, c = 5와 같이 할당됩니다.

또는 피팅 옵션을 가져와서 시작점과 하한을 설정하고 이 새로운 옵션을 사용하여 다시 피팅할 수도 있습니다.

options = fitoptions(ft)
options = 
  nlsqoptions with properties:

       StartPoint: []
            Lower: []
            Upper: []
        Algorithm: 'Trust-Region'
    DiffMinChange: 1.0000e-08
    DiffMaxChange: 0.1000
          Display: 'Notify'
      MaxFunEvals: 600
          MaxIter: 400
           TolFun: 1.0000e-06
             TolX: 1.0000e-06
           Robust: 'Off'
        Normalize: 'off'
          Exclude: []
          Weights: []
           Method: 'NonlinearLeastSquares'

options.StartPoint = [10 1 3];
options.Lower = [0 -Inf 0];
fit(month,pressure,ft,options)
ans = 
     General model:
     ans(x) = b*x^2+c*x+a
     Coefficients (with 95% confidence bounds):
       a =       10.23  (9.448, 11.01)
       b =   4.335e-05  (-1.82e-05, 0.0001049)
       c =   5.523e-12  (fixed at bound)

입력 인수

모두 축소

피팅할 데이터로, 하나(곡선 피팅) 또는 두 개(곡면 피팅)의 열을 갖는 행렬로 지정됩니다. tablename.varname을 사용하여 MATLAB 테이블의 변수를 지정할 수 있습니다. Inf 또는 NaN은 포함할 수 없습니다. 피팅에는 복소수 데이터의 실수부만 사용됩니다.

예: x

예: [x,y]

데이터형: double

피팅할 데이터로, x와 동일한 개수의 행을 갖는 열 벡터로 지정됩니다. tablename.varname을 사용하여 MATLAB 테이블의 변수를 지정할 수 있습니다. Inf 또는 NaN은 포함할 수 없습니다. 피팅에는 복소수 데이터의 실수부만 사용됩니다.

데이터가 열 벡터 형식이 아닌 경우 prepareCurveData 또는 prepareSurfaceData를 사용하십시오.

데이터형: double

피팅할 데이터로, x와 동일한 개수의 행을 갖는 열 벡터로 지정됩니다. tablename.varname을 사용하여 MATLAB 테이블의 변수를 지정할 수 있습니다. Inf 또는 NaN은 포함할 수 없습니다. 피팅에는 복소수 데이터의 실수부만 사용됩니다.

데이터가 열 벡터 형식이 아닌 경우 prepareSurfaceData를 사용하십시오. 행렬이 3개 있거나, 데이터가 length(X) = n, length(Y) = m, size(Z) = [m,n]인 그리드 벡터 형식을 갖는 경우를 예로 들 수 있습니다.

데이터형: double

피팅할 모델 유형으로, 라이브러리 모델 이름 또는 MATLAB 표현식을 나타내는 문자형 벡터나 string형 스칼라, 선형 모델 항으로 구성된 string형 배열이나 문자형 벡터(선형 모델 항으로 구성됨)로 구성된 셀형 배열, 익명 함수 또는 fittype 함수로 생성된 fittype으로 지정됩니다. fittype에 대해 유효한 임의의 첫 번째 입력값을 fit의 입력값으로 사용할 수 있습니다.

라이브러리 모델 이름 목록은 모델 이름과 방정식 항목을 참조하십시오.

사용자 지정 모델을 피팅하려면 MATLAB 표현식, 선형 모델 항으로 구성된 셀형 배열 또는 익명 함수를 사용합니다. fittype 함수를 사용하여 fittype을 만든 다음 이를 fitType 입력 인수의 값으로 사용할 수도 있습니다. 예제는 익명 함수를 사용하여 사용자 지정 모델 피팅하기 항목을 참조하십시오. 선형 모델 항을 사용하는 예제는 fittype 함수를 참조하십시오.

예: "poly2"

fitoptions 함수를 사용하여 생성된 알고리즘 옵션입니다. 피팅 옵션으로 이름-값 쌍 인수를 지정하는 방법 대신에 이 옵션을 사용할 수 있습니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: Lower=[0,0],Upper=[Inf,max(x)],StartPoint=[1 1]은 피팅 방법, 한계 및 시작점을 지정합니다.

모든 피팅 방법의 옵션

모두 축소

데이터 정규화 옵션으로, 'Normalize'와 함께 'on' 또는 'off'가 쉼표로 구분되어 지정됩니다.

데이터형: char

피팅에서 제외할 점으로, 'Exclude'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • 논리형 벡터를 설명하는 표현식(예: x > 10).

  • 제외하려는 점을 참조하는 정수로 구성된 벡터(예: [1 10 25]).

  • 모든 데이터 점에 대한 논리형 벡터. true가 이상값을 나타내며 excludedata를 사용하여 만듭니다.

예제는 피팅에서 점 제외하기 항목을 참조하십시오.

데이터형: logical | double

피팅의 가중치로, 'Weights'와 함께 응답 변수 데이터 y(곡선) 또는 z(곡면)와 크기가 같은 벡터가 쉼표로 구분되어 지정됩니다.

데이터형: double

문제 종속적인 상수에 할당할 값으로, 'problem'과 함께 문제 종속적인 상수 하나당 요소 하나를 갖는 셀형 배열이 쉼표로 구분되어 지정됩니다. 자세한 내용은 fittype을 참조하십시오.

데이터형: cell | double

평활화 옵션

모두 축소

평활화 파라미터로, 'SmoothingParam'과 함께 0과 1 사이의 스칼라 값이 쉼표로 구분되어 지정됩니다. 디폴트 값은 데이터 세트에 따라 달라집니다. 피팅 유형이 smoothingspline인 경우에만 사용할 수 있습니다.

데이터형: double

국소 회귀에서 사용할 데이터 점의 비율로, 'Span'과 함께 0과 1 사이의 스칼라 값이 쉼표로 구분되어 지정됩니다. 피팅 유형이 lowess 또는 loess인 경우에만 사용할 수 있습니다.

데이터형: double

보간 옵션

모두 축소

보간 피팅을 위한 외삽 방법으로, 다음 값 중 하나로 지정됩니다.

설명지원되는 피팅
"auto"

모든 보간 피팅 유형에 대한 디폴트 값. 피팅하는 중에 외삽 방법을 자동으로 할당하려면 ExtrapolationMethod"auto"로 설정합니다.

모든 보간 피팅 유형 및 cubicspline 곡선 피팅

"none"

외삽 없음. 피팅 데이터의 볼록 껍질 외부에 있는 쿼리 점은 NaN으로 평가됩니다.

cubicinterp 곡면 피팅과 linearinterp 곡면 피팅에 대한 ExtrapolationMethod"auto"로 설정하면 fit 함수는 외삽 방법을 "none"으로 설정합니다.

곡선 피팅 — cubicsplinepchipinterp

곡선 피팅 및 곡면 피팅 — cubicinterp, linearinterp, nearestinterp

"linear"

경계 기울기에 따른 선형 외삽.

"linearinterp" 곡선 피팅에 대한 ExtrapolationMethod"auto"로 설정하면 fit 함수는 외삽 방법을 "linear"로 설정합니다.

곡면 피팅 — cubicinterpnearestinterp

곡선 피팅 및 곡면 피팅 — linearinterp

"nearest"

최근접이웃 외삽. 이 방법은 피팅 데이터의 볼록 껍질 경계에서 가장 근접한 점의 값으로 평가됩니다.

"nearestinterp" 곡선 피팅 및 곡면 피팅에 대한 ExtrapolationMethod"auto"로 설정하면 fit 함수는 외삽 방법을 "nearest"로 설정합니다.

곡선 피팅 — cubicsplinepchipinterp

곡선 피팅 및 곡면 피팅 — cubicinterp, linearinterp, nearestinterp

"thinplate"

박판 스플라인 외삽. 이 방법은 피팅 데이터의 볼록 껍질 외부에서 박판 보간 스플라인을 확장합니다. 자세한 내용은 tpaps 항목을 참조하십시오.

"thinplateinterp" 곡면 피팅에 대한 ExtrapolationMethod"auto"로 설정하면 fit 함수는 외삽 방법을 "thinplate"로 설정합니다.

곡면 피팅 — thinplateinterp

"biharmonic"

쌍조화 스플라인 외삽. 이 방법은 피팅 데이터의 볼록 껍질 외부에서 쌍조화 보간 스플라인을 확장합니다.

"biharmonicinterp" 곡면 피팅에 대한 ExtrapolationMethod"auto"로 설정하면 fit 함수는 외삽 방법을 "biharmonic"으로 설정합니다.

곡면 피팅 — biharmonicinterp

"pchip"

조각별 3차 에르미트 보간 다항식(PCHIP) 외삽. 이 방법은 피팅 데이터의 볼록 껍질 외부에서 형태 보존 PCHIP를 확장합니다. 자세한 내용은 pchip 항목을 참조하십시오.

pchipinterp 곡선 피팅에 대한 ExtrapolationMethod"auto"로 설정하면 fit 함수는 외삽 방법을 "pchip"로 설정합니다.

곡선 피팅 — pchipinterp

"cubic"

3차 스플라인 외삽. 이 방법은 피팅 데이터의 볼록 껍질 외부에서 3차 보간 스플라인을 확장합니다.

cubicinterp 곡선 피팅과 cubicspline 곡선 피팅에 대한 ExtrapolationMethod"auto"로 설정하면 fit 함수는 외삽 방법을 "cubic"으로 설정합니다. 자세한 내용은 spline 항목을 참조하십시오.

곡선 피팅 — cubicinterp cubicspline

데이터형: char | string

선형 및 비선형 최소제곱 옵션

모두 축소

로버스트 선형 최소제곱 피팅 방법으로, 'Robust'와 함께 다음 값 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'LAR'은 최소 절대 잔차법을 지정합니다.

  • 'Bisquare'는 겹제곱 가중치 방법을 지정합니다.

피팅 유형 MethodLinearLeastSquares 또는 NonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: char

피팅할 계수의 하한으로, 'Lower'와 함께 벡터가 쉼표로 구분되어 지정됩니다. 디폴트 값은 빈 벡터로, 이는 피팅에 하한이라는 제약 조건이 적용되지 않음을 나타냅니다. 한계가 지정된 경우 벡터 길이는 계수의 개수와 같아야 합니다. coeffnames 함수를 사용하여 벡터 값에서 계수 요소의 순서를 확인합니다. 예제는 시작점과 한계를 설정하기 위해 계수 순서 찾기 항목을 참조하십시오. 제약 조건이 적용되지 않은 개별 하한은 -Inf로 지정할 수 있습니다.

MethodLinearLeastSquares 또는 NonlinearLeastSquares인 경우에 사용할 수 있습니다.

데이터형: double

피팅할 계수의 상한으로, 'Upper'와 함께 벡터가 쉼표로 구분되어 지정됩니다. 디폴트 값은 빈 벡터로, 이는 피팅에 상한이라는 제약 조건이 적용되지 않음을 나타냅니다. 한계가 지정된 경우 벡터 길이는 계수의 개수와 같아야 합니다. coeffnames 함수를 사용하여 벡터 값에서 계수 요소의 순서를 확인합니다. 예제는 시작점과 한계를 설정하기 위해 계수 순서 찾기 항목을 참조하십시오. 제약 조건이 적용되지 않은 개별 상한은 +Inf로 지정할 수 있습니다.

MethodLinearLeastSquares 또는 NonlinearLeastSquares인 경우에 사용할 수 있습니다.

데이터형: logical

비선형 최소제곱 옵션

모두 축소

계수의 초기값으로, 'StartPoint'와 함께 벡터가 쉼표로 구분되어 지정됩니다. coeffnames 함수를 사용하여 벡터 값에서 계수 요소의 순서를 확인합니다. 예제는 시작점과 한계를 설정하기 위해 계수 순서 찾기 항목을 참조하십시오.

fit 함수로 전달된 시작점(빈 벡터의 디폴트 값)이 없는 경우, 일부 라이브러리 모델의 시작점은 발견적 방식으로 정해집니다. 유리 모델과 베이불 모델, 그리고 모든 사용자 지정 비선형 모델의 경우, 이 툴박스는 구간 (0,1)에서 계수에 대한 디폴트 초기값을 임의로 균일하게 선택합니다. 따라서 동일한 데이터와 모델을 사용해서 피팅을 여러 번 수행하면 피팅된 계수가 서로 다를 수 있습니다. 이를 방지하려면 fitoptions 객체를 사용하거나 StartPoint 값으로 벡터 값을 사용하여 계수의 초기값을 지정하십시오.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: double

피팅 절차에 사용할 알고리즘으로, 'Algorithm'과 함께 'Levenberg-Marquardt' 또는 'Trust-Region'이 쉼표로 구분되어 지정됩니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: char

유한 차분 기울기에 대한 계수의 최대 변화량으로, 'DiffMaxChange'와 함께 스칼라가 쉼표로 구분되어 지정됩니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: double

유한 차분 기울기에 대한 계수의 최소 변화량으로, 'DiffMinChange'와 함께 스칼라가 쉼표로 구분되어 지정됩니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: double

명령 창의 표시 옵션으로, 'Display'와 함께 다음 옵션 중 하나가 쉼표로 구분되어 지정됩니다.

  • 'notify'는 피팅이 수렴하지 않는 경우에만 출력값을 표시합니다.

  • 'final'은 최종 출력값만 표시합니다.

  • 'iter'은 각 반복마다 출력값을 표시합니다.

  • 'off'는 출력값을 표시하지 않습니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: char

모델의 허용되는 최대 실행 횟수로, 'MaxFunEvals'와 함께 스칼라가 쉼표로 구분되어 지정됩니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: double

피팅에 대해 허용되는 최대 반복 횟수로, 'MaxIter'과 함께 스칼라가 쉼표로 구분되어 지정됩니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: double

모델 값에 대한 종료 허용오차로, 'TolFun'과 함께 스칼라가 쉼표로 구분되어 지정됩니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: double

계수 값에 대한 종료 허용오차로, 'TolX'와 함께 스칼라가 쉼표로 구분되어 지정됩니다.

MethodNonlinearLeastSquares인 경우 사용할 수 있습니다.

데이터형: double

출력 인수

모두 축소

피팅 결과로, cfit(곡선) 또는 sfit(곡면) 객체로 반환됩니다. 플로팅, 평가, 신뢰구간 계산, 적분, 미분 또는 피팅 객체 수정을 위한 함수는 피팅 후처리 항목을 참조하십시오.

적합도 통계량으로, 다음 표에 나와 있는 필드를 포함하는 gof 구조체로 반환됩니다.

필드

sse

오차제곱합

rsquare

결정계수

dfe

오차의 자유도

adjrsquare

자유도 수정된 결정계수

rmse

RMS 오차(표준 오차)

예: gof.rmse

피팅 알고리즘 정보로, 피팅 알고리즘과 관련된 정보를 포함하는 output 구조체로 반환됩니다.

필드는 알고리즘에 따라 달라집니다. 예를 들어, 비선형 최소제곱 알고리즘의 output 구조체는 다음 표에 나와 있는 필드를 포함합니다.

필드

numobs

관측값 개수(응답 변수 값)

numparam

피팅할 알려지지 않은 파라미터(계수)의 개수

residuals

원시 잔차로 구성된 벡터(관측된 값에서 피팅된 값을 뺀 값)

Jacobian

야코비 행렬

exitflag

알고리즘의 종료 조건을 설명합니다. 양의 플래그는 허용오차 내의 수렴을 나타냅니다. 0 플래그는 함수 실행이나 반복의 최대 횟수가 초과되었음을 나타냅니다. 음의 플래그는 알고리즘이 해로 수렴하지 않았음을 나타냅니다.

iterations

반복 횟수

funcCount

함수 실행 횟수

firstorderopt

1차 최적성에 대한 측도(기울기 성분의 절대 최댓값)

algorithm

사용한 피팅 알고리즘

예: output.Jacobian

버전 내역

R2006a 이전에 개발됨

모두 확장