Custom Fit Fit options
조회 수: 5 (최근 30일)
이전 댓글 표시
I have created a custom fittype and tried let MATLAB itself find the starting point, given lower and upper bounds that I specify. However, those bounds seem to have been ignored when the fit process was performed (see attachments). Does anyone know how I can force MATLAB to search for the coefficients between the bounds I have specified? Thank you.
댓글 수: 0
답변 (1개)
Matt J
2018년 6월 22일
편집: Matt J
2018년 6월 23일
The bounds weren't ignored. You defined them in "Options", but just forgot to pass Options to the fitting routine.
댓글 수: 4
Matt J
2018년 6월 25일
편집: Matt J
2018년 6월 25일
Well, the problem is probably that you are now constraining b,d to a region where the exp() operations overflow to infinity, as in the following:
>> exp(1000)
ans =
Inf
You need to double-check the magnitudes of (x-x0) to be sure that range is sensible.
One other remark. I recommend reformulating the model as follows
U=[1,(-1/(1e-6)),1,-1];
HOF=fittype('a*exp(b*X)+c*exp((b+d)*X)',...
'coefficients',{'a','b','c','d'},'independent','X');
f_normTEST=fit(binTimeCol-x0,bindataColNorm-y0,HOF,Op);
There are 2 main changes. First, the input data is pre-offset by x0,y0 so that the fitting routine doesn't have to repeat it unnecessarily in every iteration. Second, one of the exponential parameters is now represented as b+d. This tells the solver that those parameters are meant to be nonequal, since that would make a,c ambiguous.
참고 항목
카테고리
Help Center 및 File Exchange에서 Linear and Nonlinear Regression에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!