matlab程序曲面拟合.docx
《matlab程序曲面拟合.docx》由会员分享,可在线阅读,更多相关《matlab程序曲面拟合.docx(11页珍藏版)》请在冰豆网上搜索。
![matlab程序曲面拟合.docx](https://file1.bdocx.com/fileroot1/2022-10/7/8f0070a7-59c9-4faf-9ba1-f8b0febc7248/8f0070a7-59c9-4faf-9ba1-f8b0febc72481.gif)
%Gridfitdemoscript
%Thisscriptfileisdesignedtobeusedincellmode
%fromthematlabeditor,orbestofall,usethepublish
%toHTMLfeaturefromthematlabeditor.Olderversions
%ofmatlabcancopyandpasteentireblocksofcodeinto
%theMatlabcommandwindow.
Topographicdata
loadbluff_data;
x=bluff_data(:
1);
y=bluff_data(:
2);
z=bluff_data(:
3);
%Tworavinesonahillside.Scannedfroma
%topographicmapofanareainupstateNewYork.
plot3(x,y,z,'.')
%Turnthescannedpointdataintoasurface
gx=0:
4:
264;
gy=0:
4:
400;
g=gridfit(x,y,z,gx,gy);
figure
colormap(hot(256));
surf(gx,gy,g);
camlightright;
lightingphong;
shadinginterp
line(x,y,z,'marker','.','markersize',4,'linestyle','none');
title'Usetopographiccontourstorecreateasurface'
Fittingatrigonometricsurface
clear
n1=15;
n2=15;
theta=rand(n1,1)*pi/2;
r=rand(1,n2);
x=cos(theta)*r;
y=sin(theta)*r;
x=x(:
);
y=y(:
);
x=[[0011]';x;x;1-x;1-x];
y=[[0101]';y;1-y;y;1-y];
figure
plot(x,y,'.')
title'Datalocationsinthex-yplane'
z=sin(4*x+5*y).*cos(7*(x-y))+exp(x+y);
xi=linspace(0,1,51);
[xg,yg]=meshgrid(xi,xi);
zgd=griddata(x,y,z,xg,yg);
figure
surf(xi,xi,zgd)
colormap(hot(256))
camlightright
lightingphong
title'Griddataontrigsurface'
%Notethewing-likeartifactsalongtheedges,due
%totheuseofaDelaunaytriangulationingriddata.
zgrid=gridfit(x,y,z,xi,xi);
figure
surf(xi,xi,zgrid)
colormap(hot(256))
camlightright
lightingphong
title('Gridfittotrigsurface')
Thetrigsurfacewithhighlydifferentscalingsonthexandyaxes
xs=x/100;
xis=xi/100;
ys=y*100;
yis=xi*100;
%griddatahasproblemswithbadlyscaleddata
[xg,yg]=meshgrid(xis,yis);
zgd=griddata(xs,ys,z,xg,yg);
figure
surf(xg,yg,zgd)
colormap(hot(256))
camlightright
lightingphong
title'Seriousproblemsforgriddataonbadlyscaledtrigsurface'
%autoscalingon(thedefault)
zgrids=gridfit(xs,ys,z,xis,yis,'autoscale','on');
%plottheautoscaledresult
figure
surf(xis,yis,zgrids)
colormap(hot(256))
camlightright
lightingphong
title'Gridfit(automaticallyscaled)ontrigsurface'
Warning:
Duplicatex-ydatapointsdetected:
usingaverageofthezvalues.
Fittingthe"peaks"surface
clear
n=100;
x=(rand(n,1)-.5)*6;
y=(rand(n,1)-.5)*6;
z=peaks(x,y);
xi=linspace(-3,3,101);
zpgf=gridfit(x,y,z,xi,xi);
[xg,yg]=meshgrid(xi,xi);
zpgd=griddata(x,y,z,xg,yg,'cubic');
figure
surf(xi,xi,zpgd)
colormap(jet(256))
camlightright
lightingphong
title'Griddata(method==cubic)onpeakssurface'
figure
surf(xi,xi,zpgf)
colormap(hsv(256))
camlightright
lightingphong
title('Gridfittopeakssurface')
Usingtilesingridfit
%Usersofgridfitwhohavereallyhugeproblemsnowhave
%anoption.I'llgeneratealargeamountofdata,
%andhopetomodelafairlylargegrid-800x800.This
%wouldnormallyrequiregridfittosolveasystemof
%equationswith640,000unknowns.Itwouldprobablybetoo
%largeofaproblemformycomputer,wereItousegridfit
%onthefullproblem.Gridfitallowsyoutobreaktheproblem
%intosmallertilesifyouchoose.Inthiscaseeachtile
%is120x120,witha25%(30element)overlapbetweentiles.
%Relax,thisdemomaytakeacoupleofminutestorun!
!
!
!
n=100000;
x=rand(n,1);
y=rand(n,1);
z=x+y+sin((x.^2+y.^2)*10);
xnodes=0:
.00125:
1;
ynodes=xnodes;
[zg,xg,yg]=gridfit(x,y,z,xnodes,ynodes,'tilesize',120,'overlap',0.25);
surf(xg,yg,zg)
shadinginterp
colormap(jet(256))
camlightright
lightingphong
title'Tiledgridfit'