Main Content

사용자 지정 모델

사용자 지정 모델과 라이브러리 모델 비교

Curve Fitting Toolbox™ 라이브러리에 원하는 모수적 방정식이 없다면 고유의 사용자 지정 수식을 만들 수 있습니다. 그러나 라이브러리 모델을 사용하면 빠르게 수렴할 확률이 높습니다. 그 이유는 다음과 같습니다.

  • 대부분의 라이브러리 모델의 경우 툴박스가 최적의 디폴트 계수 시작점을 계산합니다. 사용자 지정 모델의 경우 툴박스가 구간 [0,1]에서 디폴트 시작점을 무작위로 선택하게 됩니다. 따라서, 사용자가 직접 사용자 지정 모델에 적합한 시작점을 찾을 필요가 있습니다.

  • 라이브러리 모델은 해석적 야코비 행렬을 사용합니다. 사용자 지정 모델은 유한 차분을 사용합니다.

선형 피팅과 비선형 피팅

사용자 지정 수식 피팅 유형을 사용하여 사용자 지정 일반 수식을 만들 수 있습니다. 일반 모델은 항(비선형일 수 있음)의 비선형 조합입니다. 일반 모델은 파라미터가 비선형일 가능성이 있는 방정식으로 정의됩니다. 사용자 지정 수식 피팅은 비선형 최소제곱 피팅 절차를 사용합니다.

비선형 피팅은 선형 최소제곱 피팅보다 덜 효율적이고 일반적으로 속도가 느리긴 하지만, 사용자 지정 수식 피팅 유형을 사용하여 사용자 지정 선형 방정식을 정의할 수 있습니다.

  • 방정식이 일련의 선형 함수로 표현될 수 있는지 여부를 잘 모르겠으면 사용자 지정 수식을 선택하십시오. 사용자가 직접 적합한 시작점을 찾아야 할 수 있습니다.

  • 사용자 지정 수식에 대해 선형 최소제곱 피팅이 필요한 경우에는 대신 선형 피팅 모델 유형을 선택하십시오. 사용자 지정 선형 피팅 항목을 참조하십시오.

대화형 방식으로 사용자 지정 수식 피팅 선택하기

곡선 피팅기 앱의 곡선 피팅기 탭에 있는 피팅 유형 섹션에서 화살표를 클릭하여 갤러리를 엽니다. 피팅 갤러리의 사용자 지정 그룹에서 사용자 지정 수식을 클릭합니다.

피팅 옵션 창에서 사용자 지정 수식 피팅을 사용하여 고유의 수식을 정의합니다. 아래에서 곡선 데이터에 대해 표시된 것처럼 사용자 지정 수식을 클릭하면 사용자 지정 수식 예제가 표시됩니다.

Default custom equation for a curve fit

곡면 데이터인 경우에는 사용자 지정 수식 예제가 xy를 모두 사용합니다.

Default custom equation for a surface fit

  1. x, y, z를 임의의 유효한 변수 이름으로 바꿀 수 있습니다.

  2. 하단 상자에서 예제를 편집하여 고유의 사용자 지정 수식을 정의합니다. 변수 이름을 사용하여 임의의 유효한 MATLAB® 표현식을 입력할 수 있습니다. 함수 또는 스크립트 이름을 지정할 수 있습니다(곡선 피팅기 앱에서 파일에 의해 저장된 곡선 피팅하기 참조).

  3. 시작점 또는 한계를 지정하려는 경우 고급 옵션을 클릭합니다. 기본적으로, 시작값은 구간 [0,1]에서 무작위로 선택되며 제약 조건이 적용되지 않습니다. 사용자가 직접 적합한 시작점과 한계를 찾아야 할 수 있습니다. 예제는 Custom Nonlinear ENSO Data Analysis 항목을 참조하십시오.

    피팅 옵션을 설정한 다음 다른 피팅 설정을 변경하면 가능한 경우 앱이 하한, 상한, 시작점에 대한 선택 사항을 기억합니다. 사용자 지정 수식의 경우 곡선 피팅기 앱은 항상 사용자 값을 기억합니다. 그러나 많은 라이브러리 모델의 경우 피팅 설정을 변경하면 앱이 시작점 또는 하한에 대한 새로운 최적의 값을 자동으로 계산합니다.

사용자 지정 수식을 저장된 곡선 피팅기 앱 세션의 일부로 저장할 수 있습니다.

사용자 함수는 피팅 도중에 그리고 피팅 전 전처리 도중에 여러 번 실행될 수 있습니다. 단, 파일에 데이터 쓰기, 명령 창에 진단 정보 표시하기와 같은 부수적 효과가 있는 함수를 사용할 때는 이로 인해 시간이 오래 걸릴 수 있습니다.

예제는 다음을 참조하십시오.

곡선 피팅기 앱에서 파일에 의해 저장된 곡선 피팅하기

이 예제에서는 곡선 피팅기 앱에서 함수 또는 스크립트 이름을 피팅 모델로 제공하는 방법을 보여줍니다. 함수를 파일에 정의하고 이를 사용하여 곡선을 피팅합니다.

  1. 함수를 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

    파일을 MATLAB 경로에 저장합니다.

  2. 일부 데이터를 정의하고 곡선 피팅기 앱을 엽니다.

    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];
    
    curveFitter
  3. 곡선 피팅기 앱의 곡선 피팅기 탭에 있는 데이터 섹션에서 데이터 선택을 클릭합니다. 피팅 데이터 선택 대화 상자의 X 데이터Y 데이터 목록에서 각각 xy를 선택합니다. 피팅 이름으로 Piecewise Function을 입력합니다.

  4. 곡선 피팅기 앱에서 piecewiseLine 함수를 사용합니다. 곡선 피팅기 탭의 피팅 유형 섹션에서 화살표를 클릭하여 갤러리를 엽니다. 피팅 갤러리의 사용자 지정 그룹에서 사용자 지정 수식을 클릭합니다. 피팅 옵션 창의 사용자 지정 수식 텍스트 상자에 함수 표현식을 입력합니다. 함수는 x 데이터와 피팅을 위한 몇몇 파라미터를 받습니다.

    piecewiseLine(x,a,b,c,d,k)

    곡선 피팅기 앱이 함수를 사용하여 피팅을 만듭니다.

Custom equation using piecewise line function

명령줄에서의 피팅에도 동일한 함수를 사용하려면 동일한 표현식을 fittype에 대한 입력값으로 사용한 다음 fittypefit에 대한 입력값으로 사용하십시오.

ft = fittype("piecewiseLine(x,a,b,c,d,k)");
f = fit(x,y,ft)
다른 예제는 fit 함수를 참조하십시오.

명령줄에서 사용자 지정 수식 피팅 선택하기

사용자 지정 모델을 피팅하려면 다음 중 하나를 수행하십시오.

  • fit 함수의 fitType 입력 인수로 사용자 지정 모델을 제공합니다. MATLAB 표현식(.m 파일 포함), 선형 모델 항으로 구성된 셀형 배열이나 string형 배열 또는 익명 함수를 사용할 수 있습니다.

  • fittype 함수를 사용하여, fit 함수에 대한 입력 인수로 사용할 fittype 객체를 만듭니다.

이 예제에서는 일부 데이터를 불러온 후 베이불 모델을 정의하는 사용자 지정 수식을 fit 함수에 대한 입력값으로 사용합니다.

time = [ 0.1;  0.1;  0.3;  0.3;  1.3;  1.7;  2.1;  2.6;  3.9;  3.9; ...
         5.1;  5.6;  6.2;  6.4;  7.7;  8.1;  8.2;  8.9;  9.0;  9.5; ...
         9.6; 10.2; 10.3; 10.8; 11.2; 11.2; 11.2; 11.7; 12.1; 12.3; ...
        12.3; 13.1; 13.2; 13.4; 13.7; 14.0; 14.3; 15.4; 16.1; 16.1; ...
        16.4; 16.4; 16.7; 16.7; 17.5; 17.6; 18.1; 18.5; 19.3; 19.7;];
conc = [0.01; 0.08; 0.13; 0.16; 0.55; 0.90; 1.11; 1.62; 1.79; 1.59; ...
        1.83; 1.68; 2.09; 2.17; 2.66; 2.08; 2.26; 1.65; 1.70; 2.39; ...
        2.08; 2.02; 1.65; 1.96; 1.91; 1.30; 1.62; 1.57; 1.32; 1.56; ...
        1.36; 1.05; 1.29; 1.32; 1.20; 1.10; 0.88; 0.63; 0.69; 0.69; ...
        0.49; 0.53; 0.42; 0.48; 0.41; 0.27; 0.36; 0.33; 0.17; 0.20;];

f = fit(time,conc,"c*a*b*x^(b-1)*exp(-a*x^b)","StartPoint",[0.01 2 5])
plot(f,time,conc)

fittype을 사용하여 사용자 지정 모델을 정의하려면 다음 형식을 사용하십시오.

f = fittype(expr)
이는 문자형 벡터, string형 스칼라, 셀형 배열, string형 배열 또는 익명 함수 expr에 포함된 MATLAB 표현식에 대한 사용자 지정 모델 fittype 객체를 생성합니다.

다음에 대한 자세한 내용은 fittype 함수 도움말 페이지를 참조하십시오.

  • fittype을 사용하여 종속 및 독립 변수, 문제 파라미터 및 계수 지정.

  • 사용자 지정 수식에 대해 선형 피팅 알고리즘을 사용하기 위해 항으로 구성된 셀형 배열이나 string형 배열 지정. expr이 문자열 또는 익명 함수인 경우 이 툴박스는 비선형 피팅 알고리즘을 사용합니다.

    선형 피팅에 대한 자세한 내용은 명령줄에서 선형 피팅 선택하기 항목을 참조하십시오.

  • 선형 및 비선형 사용자 지정 모델의 예.

단계별 예제는 사용자 지정 비선형 인구 조사 데이터 피팅 항목을 참조하십시오.