【问题标题】:Intersection point of two independet lines in MATLABMATLAB中两条独立线的交点
【发布时间】:2014-01-16 07:43:12
【问题描述】:

我正在写一个代码来找到两条独立线的交点值,但是我很困惑如何获得交点的值,直到现在我已经编码了:

y = [2.63 8.12 13.01 21.87 35.19 58.49];
x = [200 400 500 600 800 1000];
plot(x,y)
hold on
plot([200, 1000], [10, 10]) % this [10, 10] is a straight line
hold off

我想找到 plot(x,y) 和 Straight line 的交汇点,谁能给我提示谢谢:)

【问题讨论】:

  • 您的问题涉及CpVisOfA,但您的代码都没有...
  • 对不起,我忘了修改代码,为了便于理解,我将变量更改为 x 和 y :)
  • xy 是否总是单调递增?而且交叉线总是水平的?
  • 这些积分从何而来?有生成它们的方程式吗?
  • 并非所有这些值都是固定的

标签: matlab


【解决方案1】:

单调递增的分段线性曲线plot(x,y)v相交的x坐标由下式给出:

interp1q(y,x,v);

【讨论】:

    【解决方案2】:

    好的,这是 JakubT 假设的公式:

    yIntersect = 10;
    dy = diff(y);
    dx = diff(x);
    i=find(diff(y > yIntersect));
    xIntersect = x(i)+dx(i)*(yIntersect-y(i))/dy(i);
    -->
    xIntersect =  438.45
    

    当然这不是生产代码。

    【讨论】:

      【解决方案3】:

      不是一个非常优雅的解决方案,但您可以对 x 和 y 的每一对连续元素(例如,[8.12 13.01] 和 [400 500] 是第二个这样的对),采用通过的线的​​方程这两个点,计算与你的交叉线的交点(我假设你有/可以得到那个的分析公式?) - 对于每一对这样的点,你检查交叉点是否真的发生在这两个边界点之间 - 如果所以,你既有通过这两个点的线的方程,也有相交线的方程,它产生了交点。

      【讨论】:

      • 打败我。对于线段 400,8,12 -> 500,13.01 的 y 为 10 (y = 0.0489x - 11.44),X 约为 438.4458:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多