Matlab画图(清风建模学习笔记)

本文详细介绍了Matlab中用于绘制三维图形的函数,包括mesh、surf、contour及其变体,如meshc、meshz、surfc、surfl等,阐述了它们的使用方法和区别。同时,讲解了如何绘制符号函数的三维图形,如plot3、fplot3、fmesh、fsurf以及fcontour。最后,展示了如何绘制隐函数的图形,并提供了相应的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值