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);
xdata
와 ydata
간의 모델링된 관계는 다음과 같습니다.
이 코드는 평균이 2인 지수 분포의 100개 독립 샘플에서 xdata
를 생성합니다. 또한 정의 방정식에 a = [1;3;2]
를 사용하여 ydata
를 생성합니다. 이것은 표준편차 [0.1;0.5;0.5]
를 갖는 정규편차를 추가하여 섭동된 것입니다.
데이터를 최적으로 피팅하는 모델에 대한 파라미터 , = 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
을 호출하여 최적의 파라미터 를 구합니다.
[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.
결과로 생성된 파라미터를 검토합니다.
disp(ahat)
1.0169 3.1444 2.1596
피팅된 값 ahat
는 a = [1;3;2]
의 8% 내에 있습니다.
Statistics and Machine Learning Toolbox™가 있으면 nlparci
함수를 사용하여 ahat
추정값에 대한 신뢰구간을 생성하십시오.
참고 항목
lsqcurvefit
| nlparci
(Statistics and Machine Learning Toolbox)