Curve Fitting using normal equations formulation of least squares

13 visualizzazioni (ultimi 30 giorni)
I am given an data table with values of x and y and supposed to approximate the relationship between x and y with a straight line y = a0 + a1*x. I must find the parameters using normal equations formulation of least squares. I have begun, but am unsure how to plot the curve?
My code is the following:
x = [20 40 60 80 100 120 140 160];
y = [13 22 30 36 40 43 45 46];
% Normal equations formulation of least squares
A = [ones(size(x)) x];
b = inv(A'*A)*(A'*y);

Risposta accettata

Matt J
Matt J il 23 Gen 2019
x = [20 40 60 80 100 120 140 160].';
y = [13 22 30 36 40 43 45 46].';
% Normal equations formulation of least squares
A = [ones(size(x)) x];
yfit = A*((A'*A)\(A'*y));
plot(x,y,'*',x,yfit,'-')

Più risposte (1)

Stephan
Stephan il 23 Gen 2019
Modificato: Stephan il 23 Gen 2019
A = [20 40 60 80 100 120 140 160];
A = [A' ones(numel(A),1)];
b = [13 22 30 36 40 43 45 46]';
x = A\b;
fprintf('y = %.5f + %.5f * x\n', x(2),x(1))
test = x(1).*A+x(2);
scatter(A(:,1),b,'or')
hold on
plot(A,test)
hold off

Categorie

Scopri di più su Linear and Nonlinear Regression in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by