이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
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 파일에 정의합니다.
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 )
익명 함수를 사용하여 피팅 유형 만들기
익명 함수를 사용하여 피팅 유형을 만듭니다.
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
입력 인수
libraryModelName
— 피팅할 라이브러리 모델
문자형 벡터 | string형 스칼라
피팅할 라이브러리 모델로, 문자형 벡터나 string형 스칼라로 지정됩니다. 다음 표에는 몇 가지 일반적인 예가 나와 있습니다.
라이브러리 모델 이름 | 설명 |
---|---|
| 선형 다항식 곡선 |
| 선형 다항식 곡면 |
| 2차 다항식 곡선 |
| 조각별 선형 보간 |
| 조각별 3차 보간 |
| 평활화 스플라인(곡선) |
| 국소 선형 회귀(곡면) |
'log10' | 밑이 10인 로그 곡선 |
'logistic4' | 4개의 파라미터를 갖는 로지스틱 곡선 |
라이브러리 모델 이름 목록은 모델 이름과 방정식 항목을 참조하십시오.
예: 'poly2'
데이터형: char
| string
expression
— 피팅할 모델
문자형 벡터 | string형 스칼라
피팅할 모델로, 문자형 벡터나 string형 스칼라로 지정됩니다. MATLAB 명령이나 .m
파일로도 지정할 수 있습니다. 파일로 정의된 곡선 피팅하기 항목을 참조하십시오.
데이터형: char
| string
linearModelTerms
— 피팅할 모델
문자형 벡터로 구성된 셀형 배열 | string형 배열
피팅할 모델로, 문자형 벡터로 구성된 셀형 배열이나 string형 배열로 지정됩니다. 문자형 벡터나 string형 스칼라의 표현식처럼 모델 항을 지정합니다. 항에 대한 표현식에는 계수를 포함하지 마십시오. 선형 모델 항 항목을 참조하십시오.
데이터형: cell
anonymousFunction
— 피팅할 모델
익명 함수
피팅할 모델로, 익명 함수로 지정됩니다. 자세한 내용은 익명 함수의 입력 순서 항목을 참조하십시오.
데이터형: char
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: 'coefficients',{'a1','a2'}
coefficients
— 계수 이름
문자형 벡터 | string형 스칼라 | 문자형 벡터로 구성된 셀형 배열 | string형 배열
계수 이름으로, 'coefficients'
와 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 쉼표로 구분되어 지정됩니다. 다중문자 기호 이름을 사용할 수 있습니다. i
, j
, pi
, inf
, nan
, eps
는 이름으로 사용할 수 없습니다.
데이터형: char
| string
| cell
dependent
— 종속 변수 이름
y
(디폴트 값) | 문자형 벡터 | string형 스칼라
종속 변수 이름으로, 'dependent'
와 함께 문자형 벡터 또는 string형 스칼라가 쉼표로 구분되어 지정됩니다. 종속 변수를 지정하지 않으면 함수는 y
가 종속 변수라고 간주합니다.
데이터형: char
| string
independent
— 독립 변수 이름
x
(디폴트 값) | 문자형 벡터 | string형 스칼라 | 문자형 벡터로 구성된 셀형 배열 | string형 배열
독립 변수 이름으로, 'independent'
와 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열이 쉼표로 구분되어 지정됩니다. 독립 변수를 지정하지 않으면 함수는 x
가 독립 변수라고 간주합니다.
데이터형: char
| string
| cell
options
— 피팅 옵션
fitoptions
피팅 옵션으로, 'options'
와 함께 fitoptions
객체의 이름이 쉼표로 구분되어 지정됩니다.
problem
— 문제 종속적(고정) 파라미터 이름
문자형 벡터 | string형 스칼라 | 문자형 벡터로 구성된 셀형 배열 | string형 배열
문제 종속적(고정) 파라미터 이름으로, 'problem'
과 함께 문자형 벡터, string형 스칼라, 문자형 벡터로 구성된 셀형 배열 또는 string형 배열(문제 종속적 상수 하나당 하나의 요소를 가짐)이 쉼표로 구분되어 지정됩니다.
데이터형: char
| string
| cell
출력 인수
aFittype
— 피팅할 모델
fittype
객체
피팅할 모델로, 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: 자연 이웃 보간 곡면 피팅 지정하기
R2024a부터 곡면 피팅에 대해 자연 이웃 보간 피팅 유형을 지정할 수 있습니다. 자세한 내용은 곡선과 곡면 피팅 라이브러리 모델 목록 항목을 참조하십시오.
R2023b: 시그모이드 피팅 유형과 로그 피팅 유형 지정하기
R2023b부터 곡선 피팅에 시그모이드 피팅 유형과 로그 피팅 유형을 지정할 수 있습니다. 자세한 내용은 곡선과 곡면 피팅 라이브러리 모델 목록 항목을 참조하십시오.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)