fittype
곡선과 곡면 피팅을 위한 피팅 유형
구문
설명
은 aFittype = fittype(libraryModelName)libraryModelName으로 지정된 모델에 대한 fittype 객체 aFittype을 만듭니다.
은 MATLAB® 표현식으로 지정된 모델에 대한 피팅 유형을 만듭니다.aFittype = fittype(expression)
는 하나 이상의 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)

이 플롯은 피팅이 데이터를 따라가고 있음을 보여줍니다.
선형 피팅 알고리즘을 사용하려면 항으로 구성된 셀형 배열을 지정하십시오.
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.mfunction 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)
익명 함수를 사용하여 피팅 유형을 만듭니다.
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형 스칼라로 지정됩니다. 다음 표에는 몇 가지 일반적인 예가 나와 있습니다.
라이브러리 모델 이름 | 설명 |
|---|---|
| 선형 다항식 곡선 |
| 선형 다항식 곡면 |
| 2차 다항식 곡선 |
| 조각별 선형 보간 |
| 조각별 3차 보간 |
| 평활화 스플라인(곡선) |
| 국소 선형 회귀(곡면) |
'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와 제외 규칙이 필요합니다. fittype을 fit 함수에 대한 입력값으로 사용할 수 있습니다.
세부 정보
어느 변수가 종속 변수이고 어느 변수가 독립 변수인지 어떻게 구분할 수 있습니까?
종속 변수, 독립 변수, 계수를 구분하려면 다음 방정식을 살펴보십시오.
.
y는 종속 변수입니다.
x는 독립 변수입니다.
a, b, c는 계수입니다.
독립('independent') 변수는 사용자가 제어하는 것입니다. 종속('dependent') 변수는 사용자가 구하여 얻고자 하는 것입니다. 즉, 독립 변수에 종속적입니다. 계수('coefficients')는 피팅 알고리즘이 추정하는 파라미터입니다.
예를 들어, 인구 조사 데이터가 있는 경우 연도는 아무것에도 종속되지 않으므로 독립 변수입니다. 인구는 그 값이 조사된 연도에 종속적이므로 종속 변수입니다. 증가율과 같은 파라미터가 모델에 포함되어 있는 경우, 피팅 알고리즘이 이를 추정하므로 이 파라미터는 계수('coefficients') 중 하나입니다.
fittype 함수는 변수 이름에 대해 피팅 유형 표현식 입력값을 검색하여 입력 인수를 확인합니다. fittype은 x가 독립 변수이고 y가 종속 변수이고 다른 모든 변수는 모델의 계수라고 간주합니다. 변수가 존재하지 않으면 x가 사용됩니다.
피팅 유형 표현식 입력값이 익명 함수인 경우 입력값의 순서가 정확해야 합니다. 입력 순서는 fittype 함수가 추정할 계수가 무엇이고, 문제 종속적인 파라미터가 무엇이고, 독립 변수가 무엇인지 확인할 수 있도록 해 줍니다.
익명 함수에 대한 입력 인수의 순서는 다음과 같아야 합니다.
fcn = @(coefficients,problemparameters,x,y) expression
y는 선택적입니다. 마지막 인수 x와 y는 독립 변수를 나타냅니다. 곡선의 경우 x만 필요하고, 곡면의 경우 x와 y가 필요합니다. x 및/또는 y를 사용하여 독립 변수의 이름을 지정하고 싶지 않다면 'independent' 인수 이름-값 쌍을 사용하여 다른 이름을 지정할 수 있습니다. 그러나 어떤 이름을 선택하든 이 인수는 익명 함수에 대한 마지막 인수가 되어야 합니다.익명 함수를 사용하면 fittype 함수와 fit 함수로 다른 데이터를 보다 쉽게 전달할 수 있습니다.
익명 함수와 작업 공간의 변수 값(
c)을 사용하여 피팅 유형을 만듭니다.c = 1; g = fittype( @(a, b, x) a*x.^2+b*x+c )
fittype함수는 피팅 유형을 만들 때 작업 공간에 있는 변수 값을 사용할 수 있습니다. 작업 공간에서 새 데이터를 전달하려면 피팅 유형을 다시 생성하십시오. 예를 들면 다음과 같습니다.c = 5 % Change value of c. g = fittype( @(a, b, x) a*x.^2+b*x+c )여기서 피팅 유형을 만들 때
c의 값은 고정되어 있습니다.fit을 호출하는 시점에c의 값을 지정하려면 문제 파라미터를 사용하면 됩니다. 예를 들어,c = 2를 사용하여 피팅을 만들고c = 3을 사용하여 새 피팅을 만듭니다.g = fittype( @(a,b,x,c) a*x.^2+b*x+c, 'problem', 'c' ) f1 = fit( xdata, ydata, g, 'problem', 2 ) f2 = fit( xdata, ydata, g, 'problem', 3 )
선형 모델 항은 어떻게 정의해야 합니까?
선형 피팅 알고리즘을 사용하려면 linearModelTerms를 항으로 구성된 셀형 배열이나 string형 배열로 지정하십시오. 예를 들어, 다음과 같이 입력합니다.
afittype = fittype({expr1,...,exprn})expr2,...,exprn의 표현식처럼 모델 항을 지정합니다. 항에 대한 표현식에는 계수를 포함하지 마십시오. 상수항이 있으면 셀형 배열의 해당 위치에서 '1'로 표현하십시오.선형 모델이 다음 형식을 갖고
coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...
term1, term2 등에 계수가 나타나지 않도록 지정하려면 다음과 같이 expr의 셀이나 요소에 각 항이 계수 없이 지정된 셀형 배열 또는 string형 배열을 사용하십시오.LinearModelTerms = {'term1', 'term2', 'term3', ... }
예를 들어, 다음 모델은
a*x + b*sin(x) + c
a, b, c에서 선형입니다. 이 모델에는 x, sin(x), 1(c=c*1이므로)이라는 3개 항이 있으며 따라서 expr은 다음과 같습니다.LinearModelTerms = {'x','sin(x)','1'}
곡선 피팅기 앱의 피팅 유형 섹션에 있는 사용자 지정 그룹에서 선형 피팅을 선택합니다.
알고리즘
피팅 유형 표현식 입력값이 문자형 벡터, string형 스칼라 또는 익명 함수이면 이 툴박스는 비선형 피팅 알고리즘을 사용하여 모델을 데이터에 피팅합니다.
피팅 유형 표현식 입력값이 항으로 구성된 셀형 배열 또는 string형 배열이면 이 툴박스는 선형 피팅 알고리즘을 사용하여 모델을 데이터에 피팅합니다.
버전 내역
R2006a 이전에 개발됨R2024a부터 곡면 피팅에 대해 자연 이웃 보간 피팅 유형을 지정할 수 있습니다. 자세한 내용은 곡선과 곡면 피팅 라이브러리 모델 목록 항목을 참조하십시오.
R2023b부터 곡선 피팅에 시그모이드 피팅 유형과 로그 피팅 유형을 지정할 수 있습니다. 자세한 내용은 곡선과 곡면 피팅 라이브러리 모델 목록 항목을 참조하십시오.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)