# Help with linear regression function

27 views (last 30 days)
Commented: Image Analyst on 4 Oct 2022
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

Image Analyst on 1 Oct 2020
Homework hint: Use the backslash operator. See the FAQ:
They do it there.
##### 2 CommentsShowHide 1 older comment
parsa soleimani on 22 Feb 2021

Erandi T. Sandarenu on 2 Nov 2021
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

Erandi T. Sandarenu on 2 Nov 2021
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 CommentsShowHide 1 older comment
Image Analyst on 4 Oct 2022
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.

### Categories

Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange

R2020b

### Community Treasure Hunt

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

Start Hunting!