필터 지우기
필터 지우기

Finding the equation of a line passing 2 points

조회 수: 305 (최근 30일)
Soroush Asarzadeh
Soroush Asarzadeh 2016년 7월 16일
댓글: Image Analyst 2023년 1월 29일
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
Ahmed
Ahmed 2021년 12월 27일
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

댓글을 달려면 로그인하십시오.

채택된 답변

Image Analyst
Image Analyst 2016년 7월 16일
Try polyfit:
coefficients = polyfit([x1, x2], [y1, y2], 1);
a = coefficients (1);
b = coefficients (2);
  댓글 수: 5
Jose
Jose 2022년 11월 27일
When I use polyfit, It tells me that "x1" does not exist.
Image Analyst
Image Analyst 2022년 11월 27일
@Jose then define it. Certainly you must know what points you fit the line through. So, what variable names did you use? Use those instead of x1, etc.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Star Strider
Star Strider 2016년 7월 16일
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
Soroush Asarzadeh
Soroush Asarzadeh 2016년 7월 17일
편집: Soroush Asarzadeh 2016년 7월 17일
Thanks!
Star Strider
Star Strider 2016년 7월 17일
My pleasure!

댓글을 달려면 로그인하십시오.


Alok Mishra
Alok Mishra 2022년 9월 15일
편집: Alok Mishra 2022년 9월 15일
    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;
    end

on 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
navid seif
navid seif 2023년 1월 29일
Thanks.
May I ask how do it works when x1,x2,y1and y2 are vector?
Image Analyst
Image Analyst 2023년 1월 29일
@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
Azzi Abdelmalek 2016년 7월 16일
After you found a, You can get b from your equation y=a*x+b,

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by