matlab_当x,y,z都是一维时绘制三维图_griddata

当原始数据x,y都是一维的,但不知道z关于x、y的表达式,却有与x、y一一对应的一维数组z,这种情况要怎么画三维曲面图呢?

答:插值。把x、y、z都扩充成二维的就能画出三维曲面了

插值里面比较好用的函数,当属 griddata:

A=[1.486,3.059,0.1;2.121,4.041,0.1;2.570,3.959,0.1;3.439,4.396,0.1;
4.505,3.012,0.1;3.402,1.604,0.1;2.570,2.065,0.1;2.150,1.970,0.1;
1.794,3.059,0.2;2.121,3.615,0.2;2.570,3.473,0.2;3.421,4.160,0.2;
4.271,3.036,0.2;3.411,1.876,0.2;2.561,2.562,0.2;2.179,2.420,0.2;
2.757,3.024,0.3;3.439,3.970,0.3;4.084,3.036,0.3;3.402,2.077,0.3;
2.879,3.036,0.4;3.421,3.793,0.4;3.953,3.036,0.4;3.402,2.219,0.4;
3.000,3.047,0.5;3.430,3.639,0.5;3.822,3.012,0.5;3.411,2.385,0.5;
3.103,3.012,0.6;3.430,3.462,0.6;3.710,3.036,0.6;3.402,2.562,0.6;
3.224,3.047,0.7;3.411,3.260,0.7;3.542,3.024,0.7;3.393,2.763,0.7];
x=A(:,1);y=A(:,2);z=A(:,3);
figure(1)
%三维散点图
scatter3(x,y,z)
figure(2)
%二维散点图(第三维用颜色体现)
scatter(x,y,115,z)
figure(3)
%伪彩色图
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
%griddata起自动差值的作用,这样才能画出来一个三维面
%[X,Y,Z]=griddata(x,y,z,XI,YI,'v4'):这里要求XI为行向量,YI为列向量,'v4'属性用于生成平滑曲面
%linspace(x,y)是自动生成从x到y的100数组成的列向量
pcolor(X,Y,Z);
shading interp;%过渡均匀化,去掉网格线
%colormap (flipud(jet(24)))%这个可以翻转颜色
figure(4)
%等高线图
contourf(X,Y,Z) 
figure(5)
%三维曲面
surf(X,Y,Z)

下面奉上效果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

笔者此时使用的是2016b版MATLAB,2018b也是支持的,但官网文档说的未来可能会删除部分语法,如果大家发现语法失效,可以自行去官网查看griddata函数的最新用法(或者曲线救国下回老版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海阔平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值