画两条线

时间:2012-10-30 16:37:23

标签: matlab plot

使用MatLab,我知道如何使用此代码创建连接两个点的行

line([0 1],[0 1])

这将绘制从点(0,0)到点(1,1)的直线段。

我要做的是继续将该线延伸到情节的边缘。我不想在这两点之间画一条线,而是想画一条这两条点,它们跨越整个数字,任意两点。

对于这一特定的线和x = -10:10,y = -10:10的情节,我可以写:

line([-10 10], [-10 10]);

但我需要对任何一组点进行概括。

2 个答案:

答案 0 :(得分:10)

  1. 通过这两点解决线方程:

    y = a*x + b;
    

    代表ab

    a = (yp(2)-yp(1)) / (xp(2)-xp(1));
    b = yp(1)-a*xp(1);
    
  2. 找到绘图窗口的边缘

    xlims = xlim(gca);
    ylims = ylim(gca);
    

    或远离边缘,因此您仍然可以缩小,稍后重置x / y限制 或者如果此刻没有情节,请定义您想要的边缘:

    xlims = [-10 10];
    ylims = [-10 10];
    
  3. 将这些边填入线方程并绘制相应的点:

    y = xlims*a+b;
    line( xlims, y );
    
  4. 并重置边缘

    xlim(xlims);
    ylim(ylims);
    
  5. 有一个特殊情况,即垂直线,您必须单独处理。

答案 1 :(得分:6)

怎么样?
  function = long_line(X,Y,sym_len)
       dir = (Y-X)/norm(Y-X);
       Yp = X + dir*sym_len;
       Xp = X - dir*sym_len;
       line(Xp,Yp);
  end

sym_len周围绘制线的预期长度的一半X