주요 콘텐츠

fittype

곡선과 곡면 피팅을 위한 피팅 유형

설명

aFittype = fittype(libraryModelName)libraryModelName으로 지정된 모델에 대한 fittype 객체 aFittype을 만듭니다.

예제

aFittype = fittype(expression)은 MATLAB® 표현식으로 지정된 모델에 대한 피팅 유형을 만듭니다.

aFittype = fittype(expression,Name,Value)는 하나 이상의 Name,Value 쌍의 인수로 지정된 추가 옵션을 사용하여 피팅 유형을 생성합니다.

예제

aFittype = fittype(linearModelTerms)linearModelTerms에 표현식으로 지정한 항을 갖는 사용자 지정 선형 모델에 대한 피팅 유형을 만듭니다.

예제

aFittype = fittype(linearModelTerms,Name,Value)는 하나 이상의 Name,Value 쌍의 인수로 지정된 추가 옵션을 사용하여 피팅 유형을 생성합니다.

예제

aFittype = fittype(anonymousFunction)anonymousFunction으로 지정된 모델에 대한 피팅 유형을 만듭니다.

예제

aFittype = fittype(anonymousFunction,Name,Value)는 하나 이상의 Name,Value 쌍의 인수로 지정된 추가 옵션을 사용하여 피팅 유형을 생성합니다.

예제

예제

모두 축소

라이브러리 모델 이름을 지정하여 피팅 유형을 생성합니다.

3차 다항식 라이브러리 모델에 대한 fittype 객체를 생성합니다.

f = fittype('poly3')
f = 
     Linear model Poly3:
     f(p1,p2,p3,p4,x) = p1*x^3 + p2*x^2 + p3*x + p4

라이브러리 모델 rat33(분자와 분모 모두 3차로 이루어진 유리 모델)에 대해 피팅 유형을 생성합니다.

f = fittype('rat33')
f = 
     General model Rat33:
     f(p1,p2,p3,p4,q1,q2,q3,x) = (p1*x^3 + p2*x^2 + p3*x + p4) /
               (x^3 + q1*x^2 + q2*x + q3)

라이브러리 모델 이름 목록은 libraryModelName을 참조하십시오.

n을 문제 종속적인 파라미터로 지정하고 u를 독립 변수로 지정하여 사용자 지정 비선형 모델에 대한 피팅 유형을 만듭니다.

g = fittype("n*u^a",...
            problem="n",...
            independent="u")
g = 
     General model:
     g(a,n,u) = n*u^a

일부 데이터에 대한 로그 피팅에 대해 피팅 유형을 만들고 해당 피팅 유형을 사용하여 피팅을 만든 다음 피팅을 플로팅합니다.

x = linspace(1,100);  
y = 7*log(x+5);
myfittype = fittype("a*log(x+b)",...
    dependent="y",independent="x",...
    coefficients=["a" "b"])
myfittype = 
     General model:
     myfittype(a,b,x) = a*log(x+b)
myfit = fit(x',y',myfittype)
Warning: Start point not provided, choosing random start point.
myfit = 
     General model:
     myfit(x) = a*log(x+b)
     Coefficients (with 95% confidence bounds):
       a =           7  (7, 7)
       b =           5  (5, 5)
plot(myfit,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.

이 플롯은 피팅이 데이터를 따라가고 있음을 보여줍니다.

선형 피팅 알고리즘을 사용하려면 항으로 구성된 셀형 배열을 지정하십시오.

a*x + b*sin(x) + c라는 fittype에 입력해야 하는 선형 모델 항을 식별합니다. 모델은 a, b, c에서 선형입니다. 모델에는 x, sin(x), 1(c=c*1이므로)이라는 3개 항이 있습니다. 이 모델을 지정하려면 항으로 구성된 셀형 배열 LinearModelTerms = {'x','sin(x)','1'}을 사용하십시오.

선형 모델 항으로 구성된 셀형 배열을 fittype에 대한 입력값으로 사용합니다.

ft = fittype({'x','sin(x)','1'})
ft = 
     Linear model:
     ft(a,b,c,x) = a*x + b*sin(x) + c

a*cos(x) + b에 대한 선형 모델 피팅 유형을 만듭니다.

ft2 = fittype({'cos(x)','1'})
ft2 = 
     Linear model:
     ft2(a,b,x) = a*cos(x) + b

피팅 유형을 다시 만들고 계수 이름을 지정합니다.

ft3 = fittype({'cos(x)','1'},'coefficients',{'a1','a2'})
ft3 = 
     Linear model:
     ft3(a1,a2,x) = a1*cos(x) + a2

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

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

type piecewiseLine.m
function y = piecewiseLine(x,a,b,c,k)
% PIECEWISELINE   A line made of two pieces

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) = a + b*k + c.*(x(i)-k); 
    end
end
end

파일을 저장합니다.

일부 데이터를 정의하고, 함수 piecewiseLine을 지정하여 피팅 유형을 만듭니다.

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, k )')
ft = 
     General model:
     ft(a,b,c,k,x) = piecewiseLine( x, a, b, c, k )

ft 에 대한 입력값은 사전순으로 나열된 계수와 그 뒤에 오는 독립 변수들로 구성됩니다. 자세한 내용은 익명 함수의 입력 순서 항목을 참조하십시오.

계수의 순서를 제어하려면 익명 함수 입력값을 사용하십시오. 예를 들어, 계수 a와 b의 순서를 변경하려면 다음을 입력하십시오.

ft = fittype(@(b,a,c,k,x) piecewiseLine(x,a,b,c,k))

독립 변수 x를 마지막에 지정해야 합니다.

피팅 유형 ft를 사용하여 피팅을 만든 다음 결과를 플로팅합니다.

f = fit(x, y, ft, 'StartPoint', [1, 0, 1, 0.5]);
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.

익명 함수를 사용하여 피팅 유형을 만듭니다.

g = fittype( @(a, b, c, x) a*x.^2+b*x+c )

익명 함수를 사용하여 피팅 유형을 만들고 독립 파라미터와 종속 파라미터를 지정합니다.

g = fittype( @(a, b, c, d, x, y) a*x.^2+b*x+c*exp(...
 -(y-d).^2 ), 'independent', {'x', 'y'},...
     'dependent', 'z' );

익명 함수를 사용하여 곡면에 대한 피팅 유형을 만들고 독립 파라미터와 종속 파라미터, 그리고 나중에 fit을 호출할 때 지정할 문제 파라미터를 지정합니다.

g = fittype( @(a,b,c,d,x,y) a*x.^2+b*x+c*exp( -(y-d).^2 ), ...
        'problem', {'c','d'}, 'independent', {'x', 'y'}, ...
        'dependent', 'z' ); 

익명 함수를 사용하여 작업 공간 데이터를 fittype 함수와 fit 함수로 전달합니다.

S 형태 곡선을 만들고 플로팅합니다. 나중 단계에서는 일부 데이터를 피팅하기 위해 이 곡선을 늘리고 이동할 것입니다.

% Breakpoints.
xs = (0:0.1:1).';
% Height of curve at breakpoints.
ys = [0; 0; 0.04; 0.1; 0.2; 0.5; 0.8; 0.9; 0.96; 1; 1];
% Plot S-shaped curve.
xi = linspace( 0, 1, 241 );
plot( xi, interp1( xs, ys, xi, 'pchip' ), 'LineWidth', 2 )
hold on
plot( xs, ys, 'o', 'MarkerFaceColor', 'r' )
hold off
title S-curve

곡선 절점(xs)과 절점에서의 곡선 높이(ys)에 대한 값을 작업 공간에서 가져와 익명 함수를 사용하여 피팅 유형을 만듭니다. 계수는 b(밑변)와 h(높이)입니다.

ft = fittype( @(b, h, x) interp1( xs, b+h*ys, x, 'pchip' ) )

샘플 계수값으로 밑변 b=1.1과 높이 h=-0.8을 지정하여 fittype을 플로팅합니다.

plot( xi, ft( 1.1, -0.8, xi ), 'LineWidth', 2 )
title 'Fittype with b=1.1 and h=-0.8'

데이터를 불러오고, 작업 공간 값을 사용해 만든 피팅 유형 ft를 사용하여 피팅합니다.

% Load some data
xdata = [0.012;0.054;0.13;0.16;0.31;0.34;0.47;0.53;0.53;...
   0.57;0.78;0.79;0.93];
ydata = [0.78;0.87;1;1.1;0.96;0.88;0.56;0.5;0.5;0.5;0.63;...
   0.62;0.39];
% Fit the curve to the data
f = fit( xdata, ydata, ft, 'Start', [0, 1] )
% Plot fit
plot( f, xdata, ydata )
title 'Fitted S-curve'

이 예제에서는 익명 함수와 문제 파라미터를 사용하는 것과 익명 함수와 작업 공간 변수를 사용하는 것 간의 차이를 보여줍니다.

데이터를 불러오고, 문제 파라미터와 함께 익명 함수를 사용하여 곡선에 대한 피팅 유형을 만들고, 문제 파라미터를 지정하여 fit을 호출합니다.

% Load some data.
xdata = [0.098;0.13;0.16;0.28;0.55;0.63;0.81;0.91;0.91;...
    0.96;0.96;0.96;0.97];
ydata = [0.52;0.53;0.53;0.48;0.33;0.36;0.39;0.28;0.28;...
    0.21;0.21;0.21;0.2];

% Create a fittype that has a problem parameter.
g = fittype( @(a,b,c,x) a*x.^2+b*x+c, 'problem', 'c' )

% Examine coefficients. Observe c is not a coefficient.
coeffnames( g )

% Examine arguments. Observe that c is an argument.
argnames( g )

% Call fit and specify the value of c.
f1 = fit( xdata, ydata, g, 'problem', 0, 'StartPoint', [1, 2] )

% Note: Specify start points in the calls to fit to
% avoid warning messages about random start points
% and to ensure repeatability of results.

% Call fit again and specify a different value of c,
% to get a new fit.
f2 = fit( xdata, ydata, g, 'problem', 1, 'start', [1, 2] )

% Plot results. Observe the specified c constants
% do not make a good fit.
plot( f1, xdata, ydata )
hold on
plot( f2, 'b' )
hold off

위 예제를 수정하여 문제 파라미터를 사용하는 대신 변수에 대한 작업 공간 값을 사용하여 동일한 피팅을 만듭니다. 동일한 데이터를 사용하여, 변수 c에 대한 작업 공간 값과 함께 익명 함수를 사용하여 곡선에 대한 피팅 유형을 만듭니다.

% Remove c from the argument list.
try
    g = fittype( @(a,b,x) a*x.^2+b*x+c )
catch e
    disp( e.message )
end
% Observe error because now c is undefined.
% Define c and create fittype:
c = 0;
g1 = fittype( @(a,b,x) a*x.^2+b*x+c )

% Call fit (now no need to specify problem parameter).
f1 = fit( xdata, ydata, g1, 'StartPoint', [1, 2] )
% Note that this f1 is the same as the f1 above.
% To change the value of c, recreate the fittype.
c = 1;
g2 = fittype( @(a,b,x) a*x.^2+b*x+c ) % uses c = 1
f2 = fit( xdata, ydata, g2, 'StartPoint', [1, 2] )
% Note that this f2 is the same as the f2 above.
% Plot results
plot( f1, xdata, ydata )
hold on
plot( f2, 'b' )
hold off

입력 인수

모두 축소

피팅할 라이브러리 모델로, 문자형 벡터나 string형 스칼라로 지정됩니다. 다음 표에는 몇 가지 일반적인 예가 나와 있습니다.

라이브러리 모델 이름

설명

'poly1'

선형 다항식 곡선

'poly11'

선형 다항식 곡면

'poly2'

2차 다항식 곡선

'linearinterp'

조각별 선형 보간

'cubicinterp'

조각별 3차 보간

'smoothingspline'

평활화 스플라인(곡선)

'lowess'

국소 선형 회귀(곡면)

'log10'

밑이 10인 로그 곡선

'logistic4'

4개의 파라미터를 갖는 로지스틱 곡선

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

예: 'poly2'

데이터형: char | string

피팅할 모델로, 문자형 벡터나 string형 스칼라로 지정됩니다. MATLAB 명령이나 .m 파일로도 지정할 수 있습니다. 파일로 정의된 곡선 피팅하기 항목을 참조하십시오.

데이터형: char | string

피팅할 모델로, 문자형 벡터로 구성된 셀형 배열이나 string형 배열로 지정됩니다. 문자형 벡터나 string형 스칼라의 표현식처럼 모델 항을 지정합니다. 항에 대한 표현식에는 계수를 포함하지 마십시오. 선형 모델 항 항목을 참조하십시오.

데이터형: cell

피팅할 모델로, 익명 함수로 지정됩니다. 자세한 내용은 익명 함수의 입력 순서 항목을 참조하십시오.

데이터형: char

이름-값 인수

모두 축소

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

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

예: 'coefficients',{'a1','a2'}

계수 이름으로, 'coefficients'와 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 쉼표로 구분되어 지정됩니다. 다중문자 기호 이름을 사용할 수 있습니다. i, j, pi, inf, nan, eps는 이름으로 사용할 수 없습니다.

데이터형: char | string | cell

종속 변수 이름으로, 'dependent'와 함께 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다. 종속 변수를 지정하지 않으면 함수는 y가 종속 변수라고 간주합니다.

데이터형: char | string

독립 변수 이름으로, 'independent'와 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 쉼표로 구분되어 지정됩니다. 최대 두 개의 독립 변수를 지정할 수 있습니다. 독립 변수를 지정하지 않으면 함수는 x가 독립 변수라고 간주합니다.

데이터형: char | string | cell

피팅 옵션으로, 'options'와 함께 fitoptions 객체의 이름이 쉼표로 구분되어 지정됩니다.

문제 종속적(고정) 파라미터 이름으로, 'problem'과 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열(문제 종속적 상수 하나당 하나의 요소를 가짐)이 쉼표로 구분되어 지정됩니다.

데이터형: char | string | cell

출력 인수

모두 축소

피팅할 모델로, fittype으로 반환됩니다. fittype은 모델을 설명하는 정보를 캡슐화합니다. 피팅을 만들려면 데이터, fittype, 그리고 (선택적으로) fitoptions와 제외 규칙이 필요합니다. fittypefit 함수에 대한 입력값으로 사용할 수 있습니다.

세부 정보

모두 축소

알고리즘

피팅 유형 표현식 입력값이 문자형 벡터, string형 스칼라 또는 익명 함수이면 이 툴박스는 비선형 피팅 알고리즘을 사용하여 모델을 데이터에 피팅합니다.

피팅 유형 표현식 입력값이 항으로 구성된 셀형 배열 또는 string형 배열이면 이 툴박스는 선형 피팅 알고리즘을 사용하여 모델을 데이터에 피팅합니다.

버전 내역

R2006a 이전에 개발됨

모두 확장