Curve Fitting using normal equations formulation of least squares

12 ビュー (過去 30 日間)
MATLABhelp
MATLABhelp 2019 年 1 月 23 日
コメント済み: Dr. Bhavya 2024 年 9 月 18 日
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);

採用された回答

Matt J
Matt J 2019 年 1 月 23 日
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,'-')

その他の回答 (1 件)

Stephan
Stephan 2019 年 1 月 23 日
編集済み: Stephan 2019 年 1 月 23 日
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

カテゴリ

Help Center および File ExchangeLinear and Nonlinear Regression についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by