Hello , I am dealing with linear least square regression
1 view (last 30 days)
Show older comments
Charitha Heshan on 16 Mar 2018
Commented: Charitha Heshan on 18 Mar 2018
.I successfully found the coefficients for the quadratic function as follows.
function [a2,a1,a0] = QuadraticRegression (x,y)
x=[10 15 25 40 50 55];
y=[94 116 147 183 215 220];
n = length (x)
sx = sum(x)
sy = sum(y)
sx2 = sum(x.^2)
sx3 = sum(x.^3)
sx4 = sum(x.^4)
sxy = sum(x.*y)
A = [ n sx sx2; sx sx2 sx3;sx2 sx3 sx4]
b = [sy;sxy;sx2y]
a2 = w(3)
a1 = w(2)
a0 = w(1)
func(y) = -0.0170 x.^2 + 3.8870 x + 59.0062
now i'm suppose to fit the above data into a power function as follows : y = Q (x.^M) Where Q and M are coefficients.
I went through the book https://books.google.com/books/about/Numerical_Methods_for_Engineers_and_Scie.html?id=gMrMBQAAQBAJ&printsec=frontcover&source=kp_read_button#v=onepage&q&f=false
and went through Youtube and google before i posted my question here. I see no method mentions in the any of the resources. Please give me some clues. Thanks
David Goodmanson on 16 Mar 2018
try taking the logarithm of both sides and using the rule for log(C*x^m) in terms of log(C), m and log(x). That should give you an equation you can fit for two new arrays, logy = log(y) vs. logx = log(x).
Torsten on 16 Mar 2018
Edited: Torsten on 16 Mar 2018
y = Q*x^M => log(y) = log(Q) + M*log(x)
Thus take "log" of your x- and y-data and fit them by a linear function
y~ = a+b*x~
y~=log(y) and x~=log(x).
Once you have determined a and b, Q=exp(a) and M=b.
Another possibility is to use "lsqcurevfit" directly on the nonlinear function y = Q*x^M.
This will give slightly different fit parameters for Q and M because taking the log of x and y and making a linear fit as suggested above somehow distorts the data.
More Answers (0)
Find more on Linear and Nonlinear Regression in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!