mesh图
% mesh 函数:输出在某一区间内的完整网格图
clc;
clear;
%======data======
x=[1,2,4];
y=[3,5];
z=[4,3,10;5,9,13];
%================
%======meshplot======
mesh(x,y,z)
xlabel('x轴');
ylabel('y轴');
zlabel('z轴');
%====================
此时x中的元素不是从小到大排列的,这样就会产生折叠效果
x=[1,3,2];
y=[3,2];
z=[1,3,5;2,1,4]
mesh(x,y,z)
hidden off
alpha(0.8)
hidden 可以看到背部图像,不会遮挡,默认是看不见的
alpha 设置透明度,透明度在0~1之间,数值越大,越透明
x=[1,3,2;2,4,6];
y=[3,2,4;1,5,8];
z=[1,3,5;2,1,4];
mesh(x,y,z)
plot_x=0:0.5:10;%21
plot_y=0:0.5:5;%11
mat_x=repmat(plot_x,length(plot_y),1);%也就是行数是length(plot_x),列数是1
mat_y=repmat(plot_y',1,length(plot_x));
mat_z=mat_x.^2 - mat_y.^2;
mesh(mat_x,mat_y,mat_z)
没加axis vis3d 前
这个会随移动而变化,但是加上 axis vis3d之后旋转的时候坐标轴就不会随着视角的移动而变化了
用meshgrid函数更加快速的画图
%===
[x,y]=meshgrid(-5:0.5:5);
fun=sqrt(x.^2+y.^2);%eps是一个很小的量,为了防止z取不到值
z=sin(fun)./fun;
mesh(x,y,z)
axis vis3d;
不加eps这里会出现一个没的量,那么画图上面就会损失掉一些东西
可以看到空了一些东西
加上eps就不会出现这个问题
eps就是一个很小的量
meshc函数
绘制mesh图,然后绘制等高线
[x,y]=meshgrid(-5:0.5:5);
fun=sqrt(x.^2+y.^2)+eps;%eps是一个很小的量,为了防止z取不到值
z=sin(fun)./fun;
meshc(x,y,z)
zlim([min(min(z))-0.3,max(max(z))+0.1])
axis vis3d;
meshz
surf函数
surf函数和mesh函数差不多,
对比
[x,y]=meshgrid(-5:0.5:5);
fun=sqrt(x.^2+y.^2)+eps;%eps是一个很小的量,为了防止z取不到值
z=sin(fun)./fun;
%===mesh图片===
subplot(1,2,1);
mesh(x,y,z)
axis vis3d;
zlim([min(min(z))-0.3,max(max(z))+0.1])
%=======
%===surf图片===
subplot(1,2,2);
surf(x,y,z)
axis vis3d;
%======
- subplot函数用法
subplot函数用法(MATLAB)
subplot(m,n,index)
index代表是第几个图