一、mesh函数:绘制出在某一区间内完整的网格图
(1)mesh(X,Y,Z)的用法,其中X、Y和Z都是m*n维的矩阵


(2) meshc函数:除了mesh函数图形外,还在xy平面上绘制曲面的等高线
(3)meshz函数:除了mesh函数图形外,还在xy平面上绘制曲面的底座

二、surf函数:绘制出在某一区间内完整的曲面图
(1)surf函数和mesh函数的的调用格式基本相同 两者的区别: mesh绘出彩色的线,surf绘出彩色的面

(2)surfc函数:除了surf函数图形外,还在xy平面上绘制曲面的等高线
(3)surfl函数:加上了灯光效果,看起来自然点


设置彩色模式

三、 contour函数:绘制等高线图

contour(x,y,z) 在x-y平面绘制等高线图,Matlab会自动选择等高线的层级


contour(x,y,z,n)
在
x-y
平面绘制等高线图,n是一个标量,那么
Matlab
会将等高线的层数设置为
n,且会自动选择层所在的高度。
contour(x,y,z,5,'LineWidth',2) % 设置线的宽度为2
contour(x,y,z,5,'--') % 设置等高线为虚线
contour(x,y,z,5,'ShowText','on') % 显示每一层的高度
contour(x,y,z,5,
'--'
,
'ShowText'
,
'on'
,
'LineWidth'
,2)
%
可以组合起来使用
colorbar
%
显示颜色栏,也可以手动插入
xlabel(
'x
轴'
); ylabel(
'y
轴'
);
%
加上坐标轴的标签
contour(x,y,z,levels)
若想得到固定的
n
个高度的等高线,将
levels
可以设置为
n
元行向量,其中
向量中的值为高度值。


%
思考如果只想画出高度为
3
的单等高线怎么办?
contour(x,y,z,[3 3],
'ShowText'
,
'on'
)
xlabel(
'x
轴'
); ylabel(
'y
轴'
);
%
加上坐标轴的标签
contourf
函数:和
contour
函数类似,只不过画出来的等高线图有颜色填充
contourf(x,y,z,levels,
'ShowText'
,
'on'
)
xlabel(
'x
轴'
); ylabel(
'y
轴'
);
%
加上坐标轴的标签
contour3
函数:
3
维等高线图,等高线不再投影到
x-y
平面
contour3(x,y,z,levels,
'ShowText'
,
'on'
)
xlabel(
'x
轴'
); ylabel(
'y
轴'
); zlabel(
'z
轴'
);
%
加上坐标轴的标签
四、 符号函数的三维图形绘制
(1)plot3函数 (类似于plot函数,实际上可以认为画的是三维空间下的折线图)
t = linspace(0,4*pi,100);
%
符号是t,t从
0
变动到4pi,等分为
100
个点
x = sin(t)+1;
%
利用
t
计算
x
的值
y = cos(t);
%
利用
t
计算
y
的值
z = t;
%
利用
t
计算
z
的值
plot3(x,y,z)
%
绘制三维空间下的折线图
plot3(x,y,z,
'r--'
)

(2)fplot3函数 (2016a版本推出的函数,老版本Matlab用的是ezplot3函数,未来版本可能会被淘汰)
syms
t
%
符号是
t
x = sin(t)+1;
y = cos(t);
z = t;
fplot3(x,y,z)
%
默认
t
的变化范围为
[-5 5]
fplot3(x,y,z,[0 4*pi])
%
修改
t
的变化范围为
0
至
4p
(3) fmesh 三维网格图 (2016a版本推出的函数,老版本Matlab用的是ezmesh函数,未来版本可能会被淘汰)
syms
x y
z=x^2+y^2;
fmesh(z)
%
默认
x
的变化范围和
y
的变化范围都是
[-5 5]
fmesh(z,[-2 2 -4 4])
%
修改
x
的变化范围和
y
的变化范围分别为
[-2 2]
和
[-4 4]
% axis vis3d %
冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
% axis equal %
设置屏幕高宽比,使得每个坐标轴的具有均匀的刻度间隔
fmesh(z,[-2 2 -4 4],
'MeshDensity'
,11)
%
设置每个方向计算的点数
%
画一朵花花送给亲爱的
Ta
syms
u v
r = 2 + sin(7.*u + 5.*v);
x = r.*cos(u).*sin(v);
y = r.*sin(u).*sin(v);
z = r.*cos(v);
%
可以直接用乘号
% r = 2 + sin(7*u + 5*v);
% x = r*cos(u)*sin(v);
% y = r*sin(u)*sin(v);
% z = r*cos(v);
fmesh(x,y,z,[0 2*pi 0 pi])
(4)fsurf 三维曲面图 (2016a版本推出的函数,老版本Matlab用的是ezsurf函数,未来版本可能会被淘汰)
syms
x y
z=x^2+y^2;
fsurf(z)
%
默认
x
的变化范围和
y
的变化范围都是
[-5 5]
fsurf(z,[-2 2 -4 4])
%
修改
x
的变化范围和
y
的变化范围分别为
[-2 2]
和
[-4 4]
fsurf(z,[-2 2 -4 4],
'MeshDensity'
,11)
%
设置每个方向计算的点数
(5)fcontour 绘制等高线 (2016a版本推出的函数,老版本Matlab用的是ezcontour函数,未来版本可能会被淘汰)
syms
x y
z=x^2+y^2;
fcontour(z)
%
默认
x
的变化范围和
y
的变化范围都是
[-5 5]
fcontour(z,[-2 2 -4 4])
%
修改
x
的变化范围和
y
的变化范围分别为
[-2 2]
和
[-4 4]
fcontour(z,'fill','on') % 在等高线线条间进行填充

五、Matlab绘制隐函数的图形
% fimplicit3(f)
在默认区间
[-5 5]
上绘制
f(x,y,z) = 0
定义的三维隐函数。
f = @(x,y,z) x.^2 + y.^2 - z.^2;
%
函数句柄(在拟合那一节里面介绍过),这里要注意,要用点运算符
fimplicit3(f)
xlabel(
'x
轴'
); ylabel(
'y
轴'
); zlabel(
'z
轴'
);
% 加上坐标轴的标签
interval = [-5 5 -5 5 0 5];
%
指定范围
fimplicit3(f,interval)