3个回答
展开全部
在MATLAB中,已知曲线某点横坐标x0来求纵坐标y0的问题,可以通过插值函数interp1()来很好地解决。但是反过来如何解决呢?我想到了下面的办法来最大程度地得到横坐标的精确值x0。
1、首先通过MATLAB曲线图观察出纵坐标y0与曲线s=s(x,y)的交点p,判断出交点p在横坐标轴上的范围[a,b];
2、通过在区间[a,b]上灵活应用插值函数interp1,可以得到包含纵坐标y0在内的一系列值;
3、通过函数find(y>y0,1,'first')求得第一个比y0大的y的索引,通过find(y<y0,1,'last')求得第一个比y0小的y的索引;
4、通过以上索引可相应求得横坐标上的值a0和b0,而精确值x0便位于a0和b0之间;
5、可以取x0= mean([a0,b0]),便可求得纵坐标所对应的横坐标,而且精度随插值步长的减小而提高。
以上方法简单实用,通过使用该法,很容易地解决了前面所提出的问题,效果可用一张图表示如下:
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在matlab中有一个interp1()函数,可以帮助解决问题,具体情况如下:
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'cubic'立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
例如:在一天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为
12,9,9,1,0,18 ,24,28,27,25,20,18,15,13,
推测中午12点(即13点)时的温度.
x=0:2:24;
y=[12 9 9 10 18 24 28 27 25 20 18 15 13];
a=13;
y1=interp1(x,y,a,'spline')
结果为: 27.8725
若要得到一天24小时的温度曲线,则:
xi=0:1/3600:24;
yi=interp1(x,y,xi, 'spline');
plot(x,y,'o' ,xi,yi)
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'cubic'立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
例如:在一天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为
12,9,9,1,0,18 ,24,28,27,25,20,18,15,13,
推测中午12点(即13点)时的温度.
x=0:2:24;
y=[12 9 9 10 18 24 28 27 25 20 18 15 13];
a=13;
y1=interp1(x,y,a,'spline')
结果为: 27.8725
若要得到一天24小时的温度曲线,则:
xi=0:1/3600:24;
yi=interp1(x,y,xi, 'spline');
plot(x,y,'o' ,xi,yi)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询