주요 콘텐츠

lsqcurvefit을 사용한 비선형 곡선 피팅

lsqcurvefit을 사용하면 파라미터화된 비선형 함수를 데이터에 손쉽게 피팅할 수 있습니다. lsqnonlin도 사용할 수 있지만, lsqcurvefit은 곡선 피팅을 위해 lsqnonlin을 호출할 수 있는 편리한 방법입니다.

이 예제에서 벡터 xdata는 100개의 데이터 점을 나타내고 벡터 ydata는 관련된 측정값을 나타냅니다. 문제에 대한 데이터를 생성합니다.

rng(5489,'twister') % reproducible
xdata = -2*log(rand(100,1));
ydata = (ones(100,1) + .1*randn(100,1)) + (3*ones(100,1)+...
    0.5*randn(100,1)).*exp((-(2*ones(100,1)+...
   .5*randn(100,1))).*xdata);

xdataydata 간의 모델링된 관계는 다음과 같습니다.

ydatai=a1+a2exp(-a3xdatai)+εi.

이 코드는 평균이 2인 지수 분포의 100개 독립 샘플에서 xdata를 생성합니다. 또한 정의 방정식에 a = [1;3;2]를 사용하여 ydata를 생성합니다. 이것은 표준편차 [0.1;0.5;0.5]를 갖는 정규편차를 추가하여 섭동된 것입니다.

데이터를 최적으로 피팅하는 모델에 대한 파라미터 aˆi, i = 1, 2, 3을 구하는 것이 목적입니다.

lsqcurvefit을 사용하여 데이터에 파라미터를 피팅하려면 피팅 함수를 정의해야 합니다. 다음과 같이 피팅 함수 predicted를 익명 함수로 정의합니다.

predicted = @(a,xdata) a(1)*ones(100,1)+a(2)*exp(-a(3)*xdata); 

데이터에 모델을 피팅하려면 lsqcurvefit에 파라미터의 초기 추정값 a0이 필요합니다.

a0 = [2;2;2];

lsqcurvefit을 호출하여 최적의 파라미터 aˆi를 구합니다.

[ahat,resnorm,residual,exitflag,output,lambda,jacobian] =...
   lsqcurvefit(predicted,a0,xdata,ydata);
Local minimum possible.

lsqcurvefit stopped because the final change in the sum of squares relative to 
its initial value is less than the value of the function tolerance.

<stopping criteria details>

결과로 생성된 파라미터를 검토합니다.

disp(ahat)
    1.0169
    3.1444
    2.1596

피팅된 값 ahata = [1;3;2]의 8% 내에 있습니다.

Statistics and Machine Learning Toolbox™가 있으면 nlparci 함수를 사용하여 ahat 추정값에 대한 신뢰구간을 생성하십시오.

참고 항목

| (Statistics and Machine Learning Toolbox)

도움말 항목