我正在编写一个代码来查找两条独立线的交点值,但我很困惑如何获取交点的值,直到现在我已经编码:
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)和直线的交汇点,任何人都可以给我一个暗示谢谢:)
答案 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]是第二个这样的对),取通过的线的等式这两点,计算与你的交叉线的交点(我假设你有/可以得到那个的分析公式?) - 并且对于每一对这样的点,你检查交叉点是否实际发生在这两个边界点之间 - 如果所以,你既有通过这两个点的直线方程,也有交叉线的方程,它产生交点。