0

我正在尝试使用 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
    

    我正在计算 x 轴和直线之间的交点,使用欧几里得第二定理在向量 W 和直线形成的三角形矩形上。

在此处输入图像描述

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

我有两个问题:

  1. 如何让一条线穿过整个轴范围?
  2. 有没有更简单直接的方法(也许是一个函数?)来绘制垂直于向量的线?(解决上述第 2 点的更简单、更简洁的方法。)

提前致谢。

4

1 回答 1

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]);
于 2013-09-10T16:22:06.360 回答