【MATLAB】三维绘图 三维数据插值

【MATLAB】三维绘图 三维数据插值目录前言MATLAB插值函数三维绘图绘制立体曲线图绘制曲面图等高线在XY平面的投影前言调用一下MATLAB自带的seamount.mat数据文件loadseamountplot3(x,y,z,’.’,’markersize’,12)xlabel(‘Longitude’),ylabel(‘Latitude’),zlabel(‘DepthinFeet’)gridon…

大家好,欢迎来到IT知识分享网。

前言

  • 调用一下MATLAB自带的seamount.mat数据文件
load seamount
plot3(x,y,z,'.','markersize',12)
xlabel('Longitude'), ylabel('Latitude'), zlabel('Depth in Feet')
grid on

在这里插入图片描述

  • 采用函数griddata对三维数据进行插值,并通过变量xiyi控制插值范围和数量
figure
[xi, yi] = meshgrid(210.8:0.01:211.8, -48.5:0.01:-47.9);
zi = griddata(x,y,z, xi,yi);
surf(xi,yi,zi);
xlabel('Longitude'), ylabel('Latitude'), zlabel('Depth in Feet')

在这里插入图片描述

MATLAB插值函数

这里引用一下论坛大佬对MATLAB插值函数的回复

2013b 中已经没有 griddata3 了,统一为 griddata,它能同时支持 2-D和3-D内插 (也就是已经包含了旧版本里的 griddata3 的功能)。请查看:http://www.mathworks.com/help/matlab/ref/griddata.html

另外 n >= 2 维的内插有一个新函数叫 griddatan,前面的 griddata 是 griddatan 取 n = 2 和 3 的两种特殊情形。griddatan 请参考:http://www.mathworks.com/help/matlab/ref/griddatan.html

还有一个TriScatteredInterp,同时支持 2-D 和 3-D 内插, 其效率比 griddata 更高,而且使用也更方便,因为它是返回的是一个内插式 (interpolant ) F, 类似函数句柄的东西 (但并非严格意义上的函数句柄),利用 F,可以直接计算网格点上的函数值。关于 TriScatteredInterp 的用法,请参考:http://www.mathworks.com/help/matlab/ref/triscatteredinterpclass.html?searchHighlight=TriScatteredInterp
不过,尽管 TriScatteredInterp 已经比 griddata 更有优势了,但是它在将来某个新版本中会被remove掉(参考至2013b的help文档:Note: TriScatteredInterp will be removed in a futurerelease. Use scatteredInterpolant instead.),取而代之的会是下面两个更强大的函数: scatteredInterpolantgriddedInterpolant

2012 里新增两个很有用的内插函数,scatteredInterpolant 和 griddedInterpolant,其中,scatteredInterpolant 支持 2-D 和 3-D 内插,就像 griddata/TriScatteredInterp 一样,但是功能更强大,它也是返回一个内插式 F(interpolant ),然后根据 F 可以求出内插点的函数值。请查看 http://www.mathworks.com/help/matlab/ref/scatteredinterpolantclass.html

griddedInterpolant 支持 n-D 内插,n = 1,2,3,4,5,。。。,这个类似于 griddatan,但功能更强大,它也是返回一个内插式 F(interpolant ),可以直接用F求内插点的函数值。请查看:http://www.mathworks.com/help/matlab/ref/griddedinterpolantclass.html

除了以上函数,再加上 interp1,interp2,interp3等,基本包含matlab里全部主流内插函数。

三维绘图

常用三维绘图指令如下(下图转自知乎
在这里插入图片描述
指令多种多样,重点在于理解指令使用的内涵,一般常用的有画网状图的mesh,曲面图的surf和立体曲线图plot3

绘制立体曲线图不需要建立两个单调递增的网格矢量,如[X,Y] = meshgrid(1:3,10:14)
在这里插入图片描述

绘制立体曲线图

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
axis square

在这里插入图片描述

绘制曲面图

k = 5;
n = 2^k-1;
[x,y,z] = sphere(n);%产生球,将坐标输入到变量
c = hadamard(2^k); %定义颜色
surf(x,y,z,c);
colormap([1  1  0; 0  1  1])
axis equal

在这里插入图片描述

等高线在XY平面的投影

加载MATLAB的数据,利用contour函数完成等高线图绘制。

load penny;
figure;
contour(flipud(P));
axis square;

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/22823.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信