Matlab扩展了所有轴范围的图

时间:2013-09-10 15:41:13

标签: matlab plot line algebra

我正在尝试使用Matlab进行一些数据绘图。特别是我需要绘制一系列线条,有时会给出属于它的两个点,有时会给出正交向量。

我已使用以下内容获取该行的图:

  1. 给出两点A = [A(1), A(2)] B = [B(1), B(2)]的行:

    plot([A(1),B(1)],[A(2),B(2)])
    
  2. 给定向量W = [W(1), W(2)]'

    的行
    if( W(1) == 0 )
        plot( [W(1), rand(1)] ,[W(2), W(2)]) 
    else
        plot([W(1), W(1) + (W(2)^2 / W(1))],[W(2),0]) 
    end
    

    我用矢量W和直线形成的三角形矩形上的欧几里德定理计算x轴和直线之间的交点。

  3. enter image description here

    从上图可以看出,我的问题是该线只会在两点之间绘制,而不是在我轴的所有范围内绘制。

    我有两个问题:

    1. 如何在整个轴范围内划线?
    2. 是否有更简单直接的方法(可能是函数?)来绘制垂直于矢量的直线? (解决上述第2点的更简单,更干净的方法。)
    3. 提前致谢。

1 个答案:

答案 0 :(得分:1)

您是否知道用于显示情节的轴的边界?如果是这样,您可以使用axis([xmin, xmax, ymin, ymax])功能指定绘图的范围。

因此,根据您的问题,如果您知道斜率m和拦截b,则可以确保您的函数通过指定整个窗口绘制线条:

plot([xmin, xmax], [m*xmin + b, m*xmax + b]);
axis([xmin, xmax, min(m*xmin+b, m*xmax+b), max(m*xmin+b, m*xmax+b)]);

其中xminxmax是您指定为x轴范围的值。这将使你的线从你的情节的角落到另一个角落。如果你想在y方向上有一个缓冲区,那么添加一个如下:

buffer = 5; % for example, you set this to something that looks good.
axis([xmin, xmax, min(m*xmin+b, m*xmax+b)-buffer, max(m*xmin+b, m*xmax+b)+buffer]);