MATLAB中两条独立线的交点

时间:2014-01-15 22:45:18

标签: matlab

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

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

我想找到情节(x,y)和直线的交汇点,任何人都可以给我一个暗示谢谢:)

3 个答案:

答案 0 :(得分:4)

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

interp1q(y,x,v);

答案 1 :(得分: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

当然这不是生产代码。

答案 2 :(得分:1)

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