Fitting data using polyfit, nlfit ?

조회 수: 6 (최근 30일)
Ganesh
Ganesh 2012년 10월 1일
I have 2 sets of data of the same size (X1, Y1) and (X2,Y2). (X1,Y1) has a linear relationship with zero intercept (Y1=slope*X1). How can I estimate the slope, R^2 value and plot it along with 95% confidence interval lines? Using Corrcoeff, polyfit and polyval gives me a relationship of the form Y1=slope*X1 + c, but I would like to force c=0.
(X2,Y2) has a non-linear relationship of the form Y2=A-Bexp(C*X2). Likewise, I would like to determine A,B & C along with R^2 value and plot it along with 95% confidence interval lines. I know I have to use nlinfit, nlparci but I am new in this and would need your help.
Thanks much.

채택된 답변

Star Strider
Star Strider 2012년 10월 1일
편집: Star Strider 2012년 10월 1일
You seem to be acquainted with nlinfit and know how to use it, but apparently not with Anonymous Functions.
I suggest you use nlinfit for both problems. With B = [B(1) ... B(n)]' a column vector of parameters, your Y1 function becomes:
Y1 = @(B,x) B.*x;
since with only one parameter in it, you do not need to use subscripts.
Your Y2 function becomes:
Y2 = @(B,x) B(1)-B(2).*exp(B(3).*x);
These should work as your modelfun functions in nlinfit.
  댓글 수: 15
Ganesh
Ganesh 2012년 10월 5일
Is there a way to find the R^2 value for the fit?
Star Strider
Star Strider 2012년 10월 5일
편집: Star Strider 2012년 10월 5일
R^2: Yes, if you use the NonLinearModel class, particularly NonLinearModel.fit. That will also give you a number of other statistics. I use it occasionally when I need the extra statistics it gives. There is a link to NonLinearModel at the end of the nlinfit documentation.
It is my pleasure to help!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Nonlinear Regression에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by