您的位置:首页 > 编程语言 > MATLAB

MATLAB学习笔记:插值方法

2018-01-17 20:45 267 查看
分段线性插值:interp1(x0,y0,x)
三次样条插值:interp1(x0,y0,x,'spline') 或者 spline(x0,y0,x)
分段三次插值:interp1(x0,y0,x,'cubic') 
其中,x0和y0是已知的节点数组,x是待计算的插值点数组



>> x0=-5:0.5:5;
>> y0=1./(1+x0.^2);
>> x=-5:0.1:5;
>> y1=interp1(x0,y0,x);
>> y2=spline(x0,y0,x);
>> y3=interp1(x0,y0,x,'cubic');
>> plot(x,y1,'--',x,y2,'o',x,y3,'s')

二维插值:interp2(x0,y0,z0,x,y,'method')
其中,method可选nearest(最邻近点插值),linear(线性插值),spline(三次样条插值),cubic(三次插值)
如果节点分布散乱,可以用:griddata(x0,y0,z0,x,y,'method') 



>> [x0,y0]=meshgrid(1:1:5,1:1:5);
>> z0=[34 40 41 41 39;36 41 45 47 46;33 39 43 50 47;32 40 44 45 46;28 35 40 41 42];
>> [x,y]=meshgrid(1:0.1:5,1:0.1:5);
>> z1=interp2(x0,y0,z0,x,y,'linear');
>> z2=interp2(x0,y0,z0,x,y,'cubic');
>> z3=interp2(x0,y0,z0,x,y,'nearest');
>> subplot(2,2,1)
>> mesh(x0,y0,z0)
>> subplot(2,2,2)
>> mesh(x,y,z1)
>> subplot(2,2,3)
>> mesh(x,y,z2)
>> subplot(2,2,4)
>> mesh(x,y,z3)



>> x0=[13 14 10 8 18 19 10 16 10 7 8 16 16 12];
>> y0=[0.7 14 2 15 2 13 9 -1 -8 0.3 6 -7 8 -3];
>> z0=[4 8 6 8 6 8 8 9 9 8 8 9 4 9];
>> [x,y]=meshgrid(5:0.1:20,-5:0.1:20);
>> z1=griddate(x0,y0,z0,x,y,'linear');
>> z2=griddata(x0,y0,z0,x,y,'cubic');
>> subplot(2,2,1)
>> mesh(x,y,z1)
>> subplot(2,2,4)
>> mesh(x,y,z2)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: