mesh图

  1. % mesh 函数:输出在某一区间内的完整网格图
  2. clc;
  3. clear;
  4. %======data======
  5. x=[1,2,4];
  6. y=[3,5];
  7. z=[4,3,10;5,9,13];
  8. %================
  9. %======meshplot======
  10. mesh(x,y,z)
  11. xlabel('x轴');
  12. ylabel('y轴');
  13. zlabel('z轴');
  14. %====================

Matlab - 图1
Matlab - 图2
Matlab - 图3
Matlab - 图4
Matlab - 图5






此时x中的元素不是从小到大排列的,这样就会产生折叠效果

  1. x=[1,3,2];
  2. y=[3,2];
  3. z=[1,3,5;2,1,4]
  4. mesh(x,y,z)
  5. hidden off
  6. alpha(0.8)

hidden 可以看到背部图像,不会遮挡,默认是看不见的
alpha 设置透明度,透明度在0~1之间,数值越大,越透明
Matlab - 图6

  1. x=[1,3,2;2,4,6];
  2. y=[3,2,4;1,5,8];
  3. z=[1,3,5;2,1,4];
  4. mesh(x,y,z)

Matlab - 图7

  1. plot_x=0:0.5:10;%21
  2. plot_y=0:0.5:5;%11
  3. mat_x=repmat(plot_x,length(plot_y),1);%也就是行数是length(plot_x),列数是1
  4. mat_y=repmat(plot_y',1,length(plot_x));
  5. mat_z=mat_x.^2 - mat_y.^2;
  6. mesh(mat_x,mat_y,mat_z)

Matlab - 图8
没加axis vis3d 前
Matlab - 图9
这个会随移动而变化,但是加上 axis vis3d之后旋转的时候坐标轴就不会随着视角的移动而变化了
用meshgrid函数更加快速的画图

  1. %===
  2. [x,y]=meshgrid(-5:0.5:5);
  3. fun=sqrt(x.^2+y.^2);%eps是一个很小的量,为了防止z取不到值
  4. z=sin(fun)./fun;
  5. mesh(x,y,z)
  6. axis vis3d;

不加eps这里会出现一个没的量,那么画图上面就会损失掉一些东西
Matlab - 图10
可以看到空了一些东西
Matlab - 图11
加上eps就不会出现这个问题
eps就是一个很小的量

meshc函数

绘制mesh图,然后绘制等高线

  1. [x,y]=meshgrid(-5:0.5:5);
  2. fun=sqrt(x.^2+y.^2)+eps;%eps是一个很小的量,为了防止z取不到值
  3. z=sin(fun)./fun;
  4. meshc(x,y,z)
  5. zlim([min(min(z))-0.3,max(max(z))+0.1])
  6. axis vis3d;

Matlab - 图12

meshz

这个函数是这个效果
Matlab - 图13

surf函数

surf函数和mesh函数差不多,
对比
Matlab - 图14

  1. [x,y]=meshgrid(-5:0.5:5);
  2. fun=sqrt(x.^2+y.^2)+eps;%eps是一个很小的量,为了防止z取不到值
  3. z=sin(fun)./fun;
  4. %===mesh图片===
  5. subplot(1,2,1);
  6. mesh(x,y,z)
  7. axis vis3d;
  8. zlim([min(min(z))-0.3,max(max(z))+0.1])
  9. %=======
  10. %===surf图片===
  11. subplot(1,2,2);
  12. surf(x,y,z)
  13. axis vis3d;
  14. %======