Finding the equation of a line passing 2 points
Mostra commenti meno recenti
Hello, I have two points (x1,y1) and (x2,y2). Now I want to find the linear equation of a line passing through these 2 points. The equation must be like f(x)=a*x+b. Is there any function in matlab that accepts coordinates of two points an gives the related linear equation back? If not, I know that a=(y2-y1)/(x2-x1) but what is the short and easy way to find 'b'? Thanks in advance!
1 Commento
Ahmed
il 27 Dic 2021
You can select Polynomial of degree 1 from the cftool
this will give you something like this
Linear model Poly1:
f(x) = p1*x + p2
Coefficients:
p1 = xx
p2 = xx
where xx could be any number
Risposta accettata
Più risposte (3)
Star Strider
il 16 Lug 2016
A third (and probably the most efficient) option for this particular problem:
x = [1 2];
y = [5 4];
c = [[1; 1] x(:)]\y(:); % Calculate Parameter Vector
slope_m = c(2)
intercept_b = c(1)
slope_m =
-1
intercept_b =
6
This uses the mldivide,\ operator to do a least-squares fit of the points.
2 Commenti
Soroush Asarzadeh
il 17 Lug 2016
Modificato: Soroush Asarzadeh
il 17 Lug 2016
Star Strider
il 17 Lug 2016
My pleasure!
Alok Mishra
il 15 Set 2022
Modificato: Alok Mishra
il 15 Set 2022
1 voto
function [a b c eq] = makeEquationFrom2Points(x1,y1,x2,y2)
syms x y;
if x1==x2 && y1==y2
disp('Need 2 distinct points');
a=NaN;
b=NaN;
c=NaN;
eq="null";
return;
else if x1==x2
b=0;
a=1;
c=x1;
else
%for lines m not_equal to inf
%y=mx+c
%m is coeff(1) and coeff(2) is c
coefficient=polyfit([x1 x2],[y1 y2],1);
a=-coefficient(1);
c=coefficient(2);
b=1;
end
eq=a*x+b*y==c;
endon workspace do:
[a b c eq]=makeEquationFrom2Points(1,2,3,4)
Output: a =
-1.0000
b =
1
c =
1.0000
eq =
y - x == 1
3 Commenti
Michal
il 12 Dic 2022
thanks
navid seif
il 29 Gen 2023
Thanks.
May I ask how do it works when x1,x2,y1and y2 are vector?
Image Analyst
il 29 Gen 2023
@navid seif put the function in a loop over x1
for k = 1 : numel(x1)
if x1(k) == x2(k) && y1(k) == y2(k)
% etc.
end
end
Everything should have an index k, like a(k), b(k), etc., so that you store the results for every set of data.
Azzi Abdelmalek
il 16 Lug 2016
After you found a, You can get b from your equation y=a*x+b,
1 Commento
Soroush Asarzadeh
il 17 Lug 2016
Categorie
Scopri di più su Sparse Matrices in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!