# Help with linear regression function

28 views (last 30 days)

Show older comments

Jesus Alejandro Rodriguez Morales
on 30 Sep 2020

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

Thank you in advance!

##### 0 Comments

### Accepted Answer

Image Analyst
on 1 Oct 2020

Homework hint: Use the backslash operator. See the FAQ:

They do it there.

##### 2 Comments

### More Answers (2)

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

##### 0 Comments

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 Comments

Mohaddeseh Mohammadi
on 4 Oct 2022

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]

matrix = [x; ones(1,length(x))]'

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.

matrix = m' % Transpose it.

and then transposes it, with the apostrophe operator, to make the 1s be in the right column instead of the bottom row.

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!