matlab - 通过两点画一条线

标签 matlab plot

使用 MatLab,我知道如何使用以下代码创建连接两点的线:

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

从点 (0,0) 到点 (1,1) 绘制一条直线段。

我想做的是继续这条线到地 block 的边缘。我不想只在这两点之间画一条线,而是想通过这两个点画一条线,该线跨越整个图中的任何一组两点。

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

line([-10 10], [-10 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);
    

有一种特殊情况,垂直线,您必须单独处理。

关于matlab - 通过两点画一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143668/

相关文章:

c# - 如何使用 Python 和 .NET/C# 自动化 Princeton Instruments LightField

python - Pandas 平均重复的枢轴点

r - 在绘图刻度线标签中组合 paste() 和 expression()

r - ggplot2 将两个数据集绘制成一张图片

r - "Cut out"R中的3D曲面图

performance - MATLAB:向量化包含 circshift 的 for 循环

matlab - 查找带通滤波器的频率响应

arrays - 查找每个值最后一次出现的索引

python - 在 matplotlib 3d 图中将箭头放在向量上

matlab - 如何以异步方式有效地将变量从 Matlab 传递到 GPU?