我正在尝试使用Matlab进行一些数据绘图。特别是我需要绘制一系列线条,有时会给出属于它的两个点,有时会给出正交向量。
我已使用以下内容获取该行的图:
给出两点A = [A(1), A(2)] B = [B(1), B(2)]
的行:
plot([A(1),B(1)],[A(2),B(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轴和直线之间的交点。
从上图可以看出,我的问题是该线只会在两点之间绘制,而不是在我轴的所有范围内绘制。
我有两个问题:
提前致谢。
答案 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)]);
其中xmin
和xmax
是您指定为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]);