Hello, community.
Can someone help me with the following assignment.
Given a set of approximate x and y coordinates of points in a plane, determine the best fitting line in the least square sense. Using the standard formula of a line ax + b = y, compute a and b. That is, write a function that takes two row verctors of the same length called x and y as input arguments (containing x and y coordinates of points) and returns two scalars, a and b specifying the line, as output arguments.
I can't use polyfit
Thank you in advance!

 Réponse acceptée

Image Analyst
Image Analyst le 1 Oct 2020

0 votes

Homework hint: Use the backslash operator. See the FAQ:
They do it there.

2 commentaires

Thank you, it's done
parsa soleimani
parsa soleimani le 22 Fév 2021
if you have the answer now can you send it please?

Connectez-vous pour commenter.

Plus de réponses (2)

This was done without using backslash operator. But it works!
function [a b] = lin_reg(x,y)
X = mean(x);
Y = mean(y);
a = sum((x-X).*(y-Y))./sum((x-X).^2);
b = Y - a*X;
end
This was done by using the backslash operator.
function [a b] = lin_reg(x,y)
matrix = [x; ones(1,length(x))]';
x = matrix \ y';
a = x(1);
b = x(2);
end

2 commentaires

Hello, Could you please explain the method you used? I can not understand what is matrix = [x; ones(1,length(x))]'; for.
It's easy just to try something and see. Make x a row vector of 4 elements and see what it gives:
x = [1,2,3,4]
x = 1×4
1 2 3 4
matrix = [x; ones(1,length(x))]'
matrix = 4×2
1 1 2 1 3 1 4 1
So it takes a row vector and puts a row of ones below it
m = [x; ones(1,length(x))] % Append row of 1s below our x row vector.
m = 2×4
1 2 3 4 1 1 1 1
matrix = m' % Transpose it.
matrix = 4×2
1 1 2 1 3 1 4 1
and then transposes it, with the apostrophe operator, to make the 1s be in the right column instead of the bottom row.

Connectez-vous pour commenter.

Catégories

Produits

Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by