数学计算人员需要通过绘制三维图形或者四维图形给人们提供一种更直接的表达方式,可以使人们更直接、更清楚地了解数据的结果和本质 。
MATLAB语言提供了强大的三维和四维绘图命令 。
学习目标:
(1)了解三维图形的绘制;
(2)理解特殊三维图形的绘制方法;
(3)掌握三维图形显示函数和控制;
(4)了解四维图形的可视化 。
1|创建三维图形
三维图形视觉上层次分明、色彩鲜艳,具有很强的视觉冲击力,让观看的人驻景时间长,并留下深刻的印象 。三维图形给人以真实、栩栩如生的感觉,有很高的艺术欣赏价 值 。
1.1|三维图像函数
绘制三维图形时常用的命令函数:
plot3:绘制三维曲线图形;
stem3: 绘制三维枝干图;
grid on: 打开坐标网格;
grid off: 关闭坐标网格;
hold: 在原有图形上添加图形;
hold on: 保持当前图形窗口内容;
hold off: 解除当前保持状态 。
【例1】当输入参数是向量(x,y,z)时,利用plot3(x,y,z)生成三维曲 线 。
程序命令如下:
clc;closeall; clear all; t=0:pi/50:9*pi; %定义t的范围 plot3(log(t),cos(t),t); %画出三维线状图 axis square; %使各坐标轴的长度相等 grid on % 打开坐标网格线 运行结果如图1所示:
文章插图
图1
1.2 三维曲线图
plot3是基本的绘图命令,它把数学函数用曲线描绘出来 。当输入参数是向量(x,y,z),则plot3(x,y,z)生成一条通过各个(x,y,z)点的曲线;当输入参
数是三个维数相同的矩阵X、Y、Z,plot3(X,Y,Z)将绘制X、Y、Z每一列的数据曲线 。
【例2】 用plot3绘制三维曲线图 。
clc; closeall; clear all; x = -6:0.3:6; y = 6:-0.3:-6; z = log(-0.15*y).*cos(x); [X,Y] = meshgrid(x,y); %网格 Z = exp(-0.15* y).*cos(x); figure subplot(2,1,1) plot3(x,y,z,'or',x,y,z); subplot(2,1,2) plot3(X,Y,Z) 运行结果如图2
文章插图
图2
【例3】 当输入参数是矩阵X、Y、Z时,plot3(X,Y,Z)生成的三维曲线 。
程序命令如下:
clc; closeall; clear all;theta = 0:.02*pi:2*pi;x = sin(theta);y = log(theta);z = cos(2*theta);figureplot3(x,y,z,'LineWidth',2)hold on;theta = 0:0.01*pi:2*pi;x = sin(theta);y = log(theta);z = cos(3*theta);plot3(x,y,z,'rd','MarkerSize',10,'LineWidth',2)grid on 结果见图3:
【从零开始教你学会画三维图像 matlab如何绘制三维函数图像】
文章插图
图3
【例4】plot3指令使用示例 。
程序命令如下:
clc; closeall; clear all;theta = 0:.02*pi:2*pi;x = sin(theta);y = log(theta);z = cos(2*theta);figureplot3(x,y,z,'LineWidth',2)hold on;theta = 0:0.01*pi:2*pi;x = sin(theta);y = log(theta);z = cos(3*theta);plot3(x,y,z,'rd','MarkerSize',10,'LineWidth',2)grid on 运行结果如图4所示 。
文章插图
图4
1.3 三维曲面图
当矩阵过大用数字形式难以表示时,绘制曲面图形将十分有用 。MATLAB用xy平面内矩形网格中的点的z坐标来定义曲面,曲面图形由连接相邻的曲线组成 。
MATLAB可以生成网格图和面状图两种形式的曲面图,网格图是一种只对连接曲线着色的曲面图,面状图是对连接线及连接线构成的表面都进行着色 。
函数命令如下:
mesh: 绘制三维网格图;
meshc: 绘制带有基本等高线的网格图;
meshz: 绘制带有基准平面的网格图;
surf: 绘制面状图
surfl: 绘制设定光源方向的面状图;
shding interp 和 shading flat: 把曲面上的小格平滑掉,使曲面成为光滑表面;
shding faceted: 是默认状态,曲面上有小格 。
【例5】 绘制三维网格图 。
程序命令如下:
clc;closeall;clear;x=-10:0.5:10;y=x;[X,Y]=meshgrid(x,y); %生成网格点坐标R=log(X.^2+Y.^2);Z=cos(R);subplot(1,3,1); mesh(Z); title('mesh');%画网格图subplot(1,3,2);meshz(Z); title('meshz');%画基准网格图subplot(1,3,3);meshc(Z); title('meshc');% 画登高线网格图 运行结果如图5所示 。
文章插图
图5
【例6】 运用mesh、meshc、meshz绘制三维网格图 。
程序命令如下:
clc;closeall;clear; x=-10:0.5:10; y=x; [X,Y]=meshgrid(x,y); %生成网格点坐标 R=log(X.^2+Y.^2);Z=cos(R); subplot(1,3,1); mesh(Z); title('mesh');%画网格图 subplot(1,3,2);meshz(Z); title('meshz');%画基准网格图 subplot(1,3,3);meshc(Z); title('meshc');% 画登高线网格图 运行结果如图6所示 。
文章插图
图6
【例7】 使用surfl命令 。
程序命令如下:
clc;closeall; clear;z=peaks(10); surfl(z); %画指定光源方向的面状图shadinginterp;%是曲面平滑colormap(hsv)%设定颜色 运行结果如图7所示 。
文章插图
图7
【例8】 绘制三维曲面图 。
程序命令如下:
clc;close all; clear; [m,n]=meshgrid(-5:0.5:5); z=-2*m.^2-3*n.^2; subplot(2,2,1);mesh(m,n,z);title('mesh'); subplot(2,2,2);surf(m,n,z);title('surf'); subplot(2,2,3);surfc(m,n,z);title('surfc'); subplot(2,2,4);surfl(m,n,z);title('surfl'); 运行结果如图8所示 。
文章插图
图8
推荐阅读
- 从大阪到有马温泉怎么坐车
- 从厦门国际会展中心怎么去鼓浪屿
- 梅花香自苦寒来宝剑锋从磨砺出 梅花香自苦寒来
- 送给对象的祝福
- 红萝卜怎么储存 红萝卜如何储存
- 从龙华大浪路口去欢乐谷
- 大学生体能测试的目的是什么
- 6岁男孩生日祝福语
- 如何连接妙智门wifi
- 名人故事班超投笔从戎,投笔从戎的班超故事