matlab插值拟合命令示例.docx
- 文档编号:11748568
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:17
- 大小:434.11KB
matlab插值拟合命令示例.docx
《matlab插值拟合命令示例.docx》由会员分享,可在线阅读,更多相关《matlab插值拟合命令示例.docx(17页珍藏版)》请在冰点文库上搜索。
matlab插值拟合命令示例
【一维插值】interp1
yi=interp1(x,y,xi,method)
例1
在1-12的11小时内,每隔1小时测量一次温度,测得的温度依次为:
5,8,9,15,25,29,31,30,22,25,27,24。
试估计每隔1/10小时的温度值。
建立M文件temp.m
hours=1:
12。
temps=[589152529313022252724]。
h=1:
0.1:
12。
t=interp1(hours,temps,h,'spline')。
plot(hours,temps,'kp',h,t,'b')。
例2
已知飞机下轮廓线上数据如下,求x每改变0.1时的y值。
建立M文件plane.m
x0=[035791112131415]。
y0=[01.21.72.02.12.01.81.21.01.6]。
x=0:
0.1:
15。
y1=interp1(x0,y0,x,'nearest')。
y2=interp1(x0,y0,x)。
y3=interp1(x0,y0,x,'spline')。
plot(x0,y0,'kp',x,y1,'r')
plot(x0,y0,'kp',x,y2,'r')
plot(x0,y0,'kp',x,y3,'r')
【二维插值】interp2
ZI=interp2(X,Y,Z,XI,YI,method)
插值方式比较示例
●用较大间隔产生peaks函数数据点
[x,y]=meshgrid(-3:
1:
3)。
z=peaks(x,y)。
surf(x,y,z)
●产生一个较好的网格
[xi,yi]=meshgrid(-3:
0.25:
3)。
●利用最近邻方式插值
zi1=interp2(x,y,z,xi,yi,'nearest')。
surf(xi,yi,zi1)
●双线性插值方式
zi2=interp2(x,y,z,xi,yi,'bilinear')。
surf(xi,yi,zi2)
●双立方插值方式
zi3=interp2(x,y,z,xi,yi,'bicubic')。
surf(xi,yi,zi3)
●不同插值方式构造的等高线图对比
contour(xi,yi,zi1)
contour(xi,yi,zi2)
contour(xi,yi,zi3)
例3
测得平板表面3*5网格点处的温度分别为:
8281808284
7963616581
8484828586
试作出平板表面的温度分布曲面z=f(x,y)的图形。
建立M文件wendu.m
xi=1:
0.2:
5。
yi=1:
0.2:
3。
zi=interp2(x,y,temps,xi',yi,'cubic')。
mesh(xi,yi,zi)。
例4
某山区测得一些地点的高度如下表所示,平面区域为
,试作出该山区的地貌图和等高线图。
比较几种插值方法。
建立M文件moutain.m
x=0:
400:
5600。
y=0:
400:
4800。
z=[370470550600670690670620580450400300100150250。
...
510620730800850870850780720650500200300350320。
...
650760880970102010501020830900700300500550480350。
...
740880108011301250128012301040900500700780750650550。
...
830980118013201450142014001300700900850840380780750。
...
88010601230139015001500140090011001060950870900930950。
...
9101090127015001200110013501450120011501010880100010501100。
...
9501190137015001200110015501600155013801070900105011501200。
...
143014301460150015501600155016001600160015501500150015501550。
...
1420143014501480150015501510143013001200980850750550500。
...
138014101430145014701320128012001080940780620460370350。
...
13701390141014301440114011101050950820690540380300210。
...
13501370139014001410960940880800690570430290210150]。
figure
(1)。
meshz(x,y,z)
xi=0:
50:
5600。
yi=0:
50:
4800。
figure
(2)
z1i=interp2(x,y,z,xi,yi','nearest')。
surfc(xi,yi,z1i)
figure(3)
z2i=interp2(x,y,z,xi,yi')。
surfc(xi,yi,z2i)
figure(4)
z3i=interp2(x,y,z,xi,yi','cubic')。
surfc(xi,yi,z3i)
figure(5)
subplot(1,2,1),contour(xi,yi,z2i,10)。
subplot(1,2,2),contour(xi,yi,z3i,10)。
【三角测量和分散数据插值】
凸包(ConvexHulls)
loadseamount
plot(x,y,'.','markersize',10)
k=convhull(x,y)。
holdon,plot(x(k),y(k),'-r'),holdoff
gridon
德洛涅三角(DelaunayTriangulation)
loadseamount
plot(x,y,'.','markersize',12)
xlabel('Longitude'),ylabel('Latitude')
gridon
tri=delaunay(x,y)。
holdon,triplot(tri,x,y),holdoff
figure
hiddenon
trimesh(tri,x,y,z)
gridon
xlabel('Longitude')。
ylabel('Latitude')。
zlabel('DepthinFeet')
figure
[xi,yi]=meshgrid(210.8:
.01:
211.8,-48.5:
.01:
-47.9)。
zi=griddata(x,y,z,xi,yi,'cubic')。
[c,h]=contour(xi,yi,zi,'b-')。
clabel(c,h)
xlabel('Longitude'),ylabel('Latitude')
火龙尼图形(VoronoiDiagrams)
loadseamount
voronoi(x,y)
gridon
xlabel('Longitude'),ylabel('Latitude')
【数据拟合】
例5
对下面一组数据作二次多项式拟合
x=[0.10.20.4:
.1:
1]。
y=[1.9783.286.167.347.669.589.489.3011.2]。
A=polyfit(x,y,2)。
z=polyval(A,x)。
plot(x,y,'k+',x,z,'r')
例6
用下面一组数据拟合
中的参数a,b,k。
方法1:
用lsqcurvefit
建立M文件curvefun1.m
functionf=curvefun1(x,tdata)
f=x
(1)+x
(2)*exp(-0.02*x(3)*tdata)
%其中x
(1)=a。
x
(2)=b;x(3)=k。
输入命令:
tdata=100:
100:
1000。
cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59]。
x0=[0.2,0.05,0.05]。
x=lsqcurvefit('curvefun1',x0,tdata,cdata)
x=
0.0063-0.00340.2542
方法2:
用lsqnonlin
建立M文件curvefun2.m
functionf=curvefun2(x)
tdata=100:
100:
1000。
cdata=1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59]。
f=x
(1)+x
(2)*exp(-0.02*x(3)*tdata)-cdata
输入命令:
x0=[0.2,0.05,0.05]。
x=lsqnonlin('curvefun2',x0)
x=
0.0063-0.00340.2542
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 拟合 命令 示例
![提示](https://static.bingdoc.com/images/bang_tan.gif)