matlab如何提取一条曲线与y=50直线的交点坐标?

我的曲线是用离散点semilogx(x,y)出来的,我只想找出y=50时x的坐标,曲线界面上显示,不用鼠标去点就能显示,请给个提示,实例也行。
两组数 x=[0.01 0.1 0.3 0.7 1 10 50 88];
y=[10 30 46 55 60 88 97 100];

根据该曲线的不同形式,有如下不同的实现方法:

1、如果已知曲线的表达式,那么可以直接使用solve()函数求解方程得到交点坐标。

2、如果曲线由散点给出,则可以使用插值函数interp1()近似得到交点坐标

下面分别演示这两种情形:

一、求曲线y=2*x^2与直线y=50的交点

1、分析:

求曲线y=2*x^2与直线y=50的交点,只需要求解方程2*x^2=50即可

2、求解:

打开matlab软件,在命令窗口输入如下代码:x = solve('2*x^2=50'),表示使用solve()函数解方程

3、结果如下:

二、插值法求散点曲线与y=50直线的交点,散点数据为:

x=[0.01 0.1 0.3 0.7 1 10 50 88];

y=[10 30  46 55 60 88 97 100];

1、分析:

因为要求与y=50的交点,所以需要将y看做自变量,x作为因变量,然后通过y=50来插值x的值。

2、代码:

在命令窗口输入如下代码:x0 = interp1(y,x,50) ,表示根据数据(y,x)来插值y=50时x的值,结果如下图所示:

3、为了便于观察,下面将结果显示在图形上

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-07-31
如果知道两曲线的数学形式,最好数学上解方程组,求得交点
如果不知道,或者方程组不好解,只能求得近似交点,用判断语句
如两个曲线的坐标数组分别是(x1,y1),(x1,y2)(这个需要知道两个函数的交点的x范围是x1,且x1的步长足够小):find(abs(y1-y2)<=eps)

再有,如果纯粹是一些数据画的图,横坐标不同即(x1,y1),(x2,y2)
可以数据拟合两条曲线,用多项式拟合或指数拟合,或其他拟合,拟合出函数形式,解方程。本回答被网友采纳
第2个回答  2011-01-19
插值就行了啊

interp1(y, x, 50)

默认为线性插值,doc interp1一下,还有好几种不同的方法。本回答被提问者采纳
第3个回答  2011-01-18
看你的曲线是什么样子的了,如果是单调的话。
最简单的是用
interp
相似回答