第5章 MATLAB绘图 5.1 二维数据曲线图 5.2 其他二维图形 5.3 隐函数绘图 5.4 三维图形 5.5 图形修饰处理

Slides:



Advertisements
Similar presentations
2.6 隐函数微分法 第二章 第二章 二、高阶导数 一、隐式定义的函数 三、可微函数的有理幂. 一、隐函数的导数 若由方程 可确定 y 是 x 的函数, 由 表示的函数, 称为显函数. 例如, 可确定显函数 可确定 y 是 x 的函数, 但此隐函数不能显化. 函数为隐函数. 则称此 隐函数求导方法.
Advertisements

全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
§3.4 空间直线的方程.
《解析几何》 乐山师范学院 0 引言 §1 二次曲线与直线的相关位置.
MATLAB程序设计教程(第二版) 刘卫国 主编 中国水利水电出版社.
第5章 MATLAB绘图 5.1 二维图形 5.2 三维图形 5.3 三维图形的精细处理 5.4 隐函数绘图 5.5 低层绘图操作
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
第四讲 绘图功能.
数学软件 Matlab —— 二维平面作图 —— 三维空间作图.
MATLAB程序设计基础 MATLAB的图形处理.
——matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的。
数学软件 Matlab —— 二维平面作图 —— 三维空间作图.
——Matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的。
数值计算的工具—MATLAB 电子计算机技术为应用数学解决实际问题创造了物质条件 。
第5章 MATLAB 绘图.
——matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现了可视化,这是其它语言所不能比拟的。
第三节 格林公式及其应用(2) 一、曲线积分与路径无关的定义 二、曲线积分与路径无关的条件 三、二元函数的全微分的求积 四、小结.
探索三角形相似的条件(2).
第一部分 Matlab 软件介绍 《数学分析》实验课.
第三章 MATLAB图形系统 3.1 图形绘制 3.2 图形标注 3.3 对数和极坐标系中图形绘制 3.4 复杂图形绘制 3.5 坐标轴控制
Matlab教學 Speaker:林昱志 Date:2012/10/25.
Application of Matlab Language
第4章 MATLAB绘图 4.1 MATLAB二维曲线绘图 基本绘图指令 1.plot(Y) 功能:画一条或多条折线图.
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
绘制圆与多边形 椭圆形 绘制椭圆形的方法是 drawOval(x ,y , width , height), 绘制实心椭圆形的方法是
  MATLAB操作基础 《信息隐藏实验教程》教学幻灯片 一.
数学模型实验课(三) 插值与三维图形.
第三章 MATLAB图形系统 3.1 图形绘制 3.2 图形标注 3.3 对数和极坐标系中图形绘制 3.4 复杂图形绘制 3.5 坐标轴控制
数学建模与数学实验 MATLAB作图.
§ 9.1常用数学软件简介及MATLAB基础知识
实验二 MATLAB绘制图形 (一) 实验类型:验证性 (二) 实验类别:基础实验 (三) 实验学时数:2学时 .
第一章 函数与极限.
1.函数 2.程序 3.图形 目的:掌握Matlab作平面曲线图的方法与技巧
第一单元 第3课 Matlab基本语法与操作 1. plot指令的基本调用格式 2.多次叠绘、双纵坐标和多子图 3.多子图
数学软件 第9讲 MATLAB绘图二 主讲教师: 鲜大权 副教授 西南科技大学理学院数学系.
第二十二章 曲面积分 §1 第一型曲面积分 §2 第二型曲面积分 §3 高斯公式与斯托克斯公式.
第三单元 第3课 实验 多元函数的积分 实验目的:掌握matlab计算二重积分与三重积分的方法,提高应用重积分解决有关应用问题的能力。
实数与向量的积.
概 率 统 计 主讲教师 叶宏 山东大学数学院.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
第5章 MATLAB绘图 5.1 二维图形 5.2 三维图形 5.3 三维图形的精细处理 5.4 隐函数绘图 5.5 低层绘图操作
Z Mathematical Model ‡ ' 图形处理.
MATLAB 程式設計入門篇 三維立體繪圖 (part1)
三維繪圖 Helix t = 0:pi/50:10*pi; % linspace(0,10*pi,500); figure plot3(sin(t),cos(t),t) grid on axis square Remark: zlabel, view, surf.
第3章 MATLAB图形初步 编者.
3.3 垂径定理 第2课时 垂径定理的逆定理.
第二章 MATLAB编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理 2.4 习题 2019年4月23日
第4章 Excel电子表格制作软件 4.4 函数(一).
复习: 若A(x1,y1,z1) , B(x2,y2,z2), 则 AB = OB - OA=(x2-x1 , y2-y1 , z2-z1)
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
可编辑图表汇总 修改方法: 点击图表内容→“设计”选项卡→编辑数据.
第二节 MATLAB 图形处理 内容: §1 二维图形显示 §2 图形可视编辑工具 §3 三维图形显示 §4 视角变换与三视图
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
O x y i j O x y i j a A(x, y) y x 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算 5.4 平面向量的坐标运算.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
线 性 代 数 厦门大学线性代数教学组 2019年5月12日4时19分 / 45.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
高中数学必修 平面向量的基本定理.
1.5 Matlab绘图 plot(y) plot(x,y)
正弦函数的性质与图像.
第三章 从概率分布函数的抽样 (Sampling from Probability Distribution Functions)
3.2 平面向量基本定理.
实验一 特殊函数与图形.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
实验二 MATLAB绘制图形.
第2章 MATLAB的基本语法 2.1 变量及其赋值 2.2 运算符与数学表达式 2.3 控制流 2.4 数据的输入输出及文件的读写
§4.5 最大公因式的矩阵求法( Ⅱ ).
Presentation transcript:

第5章 MATLAB绘图 5.1 二维数据曲线图 5.2 其他二维图形 5.3 隐函数绘图 5.4 三维图形 5.5 图形修饰处理 5.1 二维数据曲线图 5.2 其他二维图形 5.3 隐函数绘图 5.4 三维图形 5.5 图形修饰处理 5.6 图像处理与动画制作

5.1 二维数据曲线图 5.1.1 绘制单根二维曲线 plot函数的基本调用格式为: plot(x,y) 5.1 二维数据曲线图 5.1.1 绘制单根二维曲线 plot函数的基本调用格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。

y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y) y=2e(-0.5x)cos(4πx) 程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y)

例5-2 绘制曲线。 t=0:0.1:2*pi; x=t.*sin(3*t); y=t.*sin(t).*sin(t); 例5-2 绘制曲线。 程序如下: t=0:0.1:2*pi; x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y);

plot函数最简单的调用格式是只包含一个输入参数: plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。

5.1.2 绘制多根二维曲线 1.plot函数的输入参数是矩阵形式 5.1.2 绘制多根二维曲线 1.plot函数的输入参数是矩阵形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

(3)对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。 当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。

2.含多个输入参数的plot函数 调用格式为: plot(x1,y1,x2,y2,…,xn,yn) (1) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。

(2) 当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

例5-3 分析下列程序绘制的曲线。 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x=[x1;x2;x3]'; y=[y1;y2;y3]'; plot(x,y,x1,y1-1)

3.具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。

例5-4 用不同标度在同一坐标内绘制曲线y1=0.2e(-0.5x)cos(4πx) 和y2=2e(-0.5x)cos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); plotyy(x,y1,x,y2);

4.图形保持 hold on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。

例5-5 采用图形保持,在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); plot(x,y1) hold on y2=2*exp(-0.5*x).*cos(pi*x); plot(x,y2); hold off

5.1.3 设置曲线样式 MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用。例如,“b-.”表示蓝色点划线,“y:d”表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。 要设置曲线样式可以在plot函数中加绘图选项,其调用格式为: plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)

例5-6 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0. 2e-0. 5xcos(4πx) 和y2=2e-0 例5-6 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),标记两曲线交叉点。 程序如下: x=linspace(0,2*pi,1000); y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)<1e-2); %查找y1与y2相等 点(近似相等)的下标 x1=x(k); %取y1与y2相等点的x坐标 y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求y1与y2值相等点的y坐标 plot(x,y1,x,y2,'k:',x1,y3,'bp');

5.1.4 图形标注与坐标控制 1.图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) 5.1.4 图形标注与坐标控制 1.图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y,图形说明) legend(图例1,图例2,…)

函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如,text(0.3,0.5,‘sin({\omega}t+{\beta})’)将得到标注效果sin(ωt+β)。

例5-7 在0≤x≤2区间内,绘制曲线y1=2e-0.5x和y2=cos(4πx),并给图形添加图形标注。 程序如下: x=0:pi/100:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); plot(x,y1,x,y2) title('x from 0 to 2{\pi}'); %加图形标题 xlabel('Variable X'); %加X轴说明 ylabel('Variable Y'); %加Y轴说明 text(0.8,1.5,'曲线y1=2e^{-0.5x}'); %在指定位置添加图形说明 text(2.5,1.1,'曲线y2=cos(4{\pi}x)'); legend(‘y1’,‘ y2’) %加图例

2.坐标控制 axis函数的调用格式为: axis([xmin xmax ymin ymax zmin zmax]) axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。 axis on:显示坐标轴。

给坐标加网格线用grid命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。 给坐标加边框用box命令来控制。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。

例5-8 在同一坐标中,可以绘制3个同心圆,并加坐标控制。 t=0:0.01:2*pi; x=exp(i*t); 例5-8 在同一坐标中,可以绘制3个同心圆,并加坐标控制。 程序如下: t=0:0.01:2*pi; x=exp(i*t); y=[x;2*x;3*x]'; plot(y) grid on; %加网格线 box on; %加坐标边框 axis equal %坐标轴采用等刻度

5.1.5 图形的可视化编辑 MATLAB 6.5版本在图形窗口中提供了可视化的图形编辑工具,利用图形窗口菜单栏或工具栏中的有关命令可以完成对窗口中各种图形对象的编辑处理。 在图形窗口上有一个菜单栏和工具栏。菜单栏包含File、Edit、View、Insert、Tools、Window和Help共7个菜单项,工具栏包含11个命令按钮。

5.1.6 对函数自适应采样的绘图函数 fplot函数的调用格式为: fplot(fname,lims,tol,选项) 5.1.6 对函数自适应采样的绘图函数 fplot函数的调用格式为: fplot(fname,lims,tol,选项) 其中fname为函数名,以字符串形式出现,lims为x,y的取值范围,tol为相对允许误差,其系统默认值为2e-3。选项定义与plot函数相同。

例5-9 用fplot函数绘制f(x)=cos(tan(πx))的曲线。 命令如下: fplot('cos(tan(pi*x))',[ 0,1],1e-4)

5.1.7 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p) 5.1.7 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。 例5-10 在图形窗口中,以子图形式同时绘制多根曲线。

5.2 其他二维图形 5.2.1 其他坐标系下的二维数据曲线图 1.对数坐标图形 5.2 其他二维图形 5.2.1 其他坐标系下的二维数据曲线图 1.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 例5-11 绘制y=10x2的对数坐标图并与直角线性坐标图进行比较。

例5-12 绘制r=sin(t)cos(t)的极坐标图,并标记数据点。 2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。 例5-12 绘制r=sin(t)cos(t)的极坐标图,并标记数据点。 程序如下: t=0:pi/50:2*pi; r=sin(t).*cos(t); polar(t,r,'-*');

5.2.2 二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: 5.2.2 二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项) stairs(x,y,选项) stem(x,y,选项) fill(x1,y1,选项1,x2,y2,选项2,…)

例5-13 分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。 程序如下: x=0:pi/10:2*pi; y=2*sin(x); subplot(2,2,1);bar(x,y,'g'); title('bar(x,y,''g'')');axis([0,7,-2,2]); subplot(2,2,2);stairs(x,y,'b'); title('stairs(x,y,''b'')');axis([0,7,-2,2]); subplot(2,2,3);stem(x,y,'k'); title('stem(x,y,''k'')');axis([0,7,-2,2]); subplot(2,2,4);fill(x,y,'y'); title('fill(x,y,''y'')');axis([0,7,-2,2]);

例5-14 绘制图形: MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。 例5-14 绘制图形: (1) 某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。 (2) 绘制复数的相量图:7+2.9i、2-3i和-1.5-6i。

legend('一季度','二季度','三季度','四季度'); subplot(1,2,2); 程序如下: subplot(1,2,1); pie([2347,1827,2043,3025]); title('饼图'); legend('一季度','二季度','三季度','四季度'); subplot(1,2,2); compass([7+2.9i,2-3i,-1.5-6i]); title('相量图');

5.3 隐函数绘图 MATLAB提供了一个ezplot函数绘制隐函数图形,下面介绍其用法。 5.3 隐函数绘图 MATLAB提供了一个ezplot函数绘制隐函数图形,下面介绍其用法。 (1) 对于函数f = f(x),ezplot函数的调用格式为: ezplot(f):在默认区间-2π<x<2π绘制f = f(x)的图形。 ezplot(f, [a,b]):在区间a<x<b绘制f = f(x)的图形。

(2) 对于隐函数f = f(x,y),ezplot函数的调用格式为: ezplot(f):在默认区间-2π<x<2π和-2π<y<2π绘制f(x,y) = 0的图形。 ezplot(f, [xmin,xmax,ymin,ymax]):在区间xmin<x<xmax和ymin<y<ymax绘制f(x,y) = 0的图形。 ezplot(f, [a,b]):在区间a<x<b和a<y< b绘制f(x,y) = 0的图形。

(3) 对于参数方程x = x(t)和y = y(t),ezplot函数的调用格式为: ezplot(x,y):在默认区间0<t<2π绘制x=x(t)和y=y(t)的图形。 ezplot(x,y, [tmin,tmax]):在区间tmin < t < tmax绘制x=x(t)和y=y(t)的图形。

ezplot('x^2+y^2-9');axis equal subplot(2,2,2); 例5-15 隐函数绘图应用举例。 程序如下: subplot(2,2,1); ezplot('x^2+y^2-9');axis equal subplot(2,2,2); ezplot('x^3+y^3-5*x*y+1/5') subplot(2,2,3); ezplot('cos(tan(pi*x))',[ 0,1]) subplot(2,2,4); ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi])

5.4 三维图形 5.4.1 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: 5.4 三维图形 5.4.1 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。

title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); 例5-16 绘制三维曲线。 程序如下: t=0:pi/100:20*pi; x=sin(t); y=cos(t); z=t.*sin(t).*cos(t); plot3(x,y,z); title('Line in 3-D Space'); xlabel('X');ylabel('Y');zlabel('Z'); grid on;

5.4.2 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: 5.4.2 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。

2.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c) surf(x,y,z,c) 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。

例5-17 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下: [x,y]=meshgrid(0:0.25:4*pi); z=sin(x+sin(y))-x/10; mesh(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]); 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。

例5-18 在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。程序如下: [x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1);mesh(x,y,z);title('mesh(x,y,z)') subplot(2,2,2);meshc(x,y,z);title('meshc(x,y,z)') subplot(2,2,3);meshz(x,y,z);title('meshz(x,y,z)') subplot(2,2,4);surf(x,y,z);title('surf(x,y,z)')

3.标准三维曲面 sphere函数的调用格式为: [x,y,z]=sphere(n) cylinder函数的调用格式为: [x,y,z]= cylinder(R,n) MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。

[x,y,z]= cylinder(2+sin(t),30); subplot(2,2,1);surf(x,y,z); 例5-19 绘制标准三维曲面图形。 程序如下: t=0:pi/20:2*pi; [x,y,z]= cylinder(2+sin(t),30); subplot(2,2,1);surf(x,y,z); subplot(2,2,2);[x,y,z]=sphere; surf(x,y,z);subplot(2,1,2); [x,y,z]=peaks(30);surf(x,y,z);

5.4.3 其他三维图形 在介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、stem3、pie3 和fill3。 bar3函数绘制三维条形图,常用格式为: bar3(y) bar3(x,y)

stem3函数绘制离散序列数据的三维杆图,常用格式为: stem3(z) stem3(x,y,z) pie3函数绘制三维饼图,常用格式为: pie3(x) fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,常用格式为: fill3(x,y,z,c)

例5-20 绘制三维图形: (1) 绘制魔方阵的三维条形图。 (2) 以三维杆图形式绘制曲线y=2sin(x)。 例5-20 绘制三维图形: (1) 绘制魔方阵的三维条形图。 (2) 以三维杆图形式绘制曲线y=2sin(x)。 (3) 已知x=[2347,1827,2043,3025],绘制饼图。 (4) 用随机的顶点坐标值画出五个黄色三角形。

fill3(rand(3,5),rand(3,5),rand(3,5), 'y' ) 程序如下: subplot(2,2,1); bar3(magic(4)) subplot(2,2,2); y=2*sin(0:pi/10:2*pi); stem3(y); subplot(2,2,3); pie3([2347,1827,2043,3025]); subplot(2,2,4); fill3(rand(3,5),rand(3,5),rand(3,5), 'y' )

例5-21 绘制多峰函数的瀑布图和等高线图。 subplot(1,2,1); [X,Y,Z]=peaks(30); 例5-21 绘制多峰函数的瀑布图和等高线图。 程序如下: subplot(1,2,1); [X,Y,Z]=peaks(30); waterfall(X,Y,Z) xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis'); subplot(1,2,2); contour3(X,Y,Z,12,'k'); %其中12代表高度的等级数

5.5 图形修饰处理 5.5.1 视点处理 MATLAB提供了设置视点的函数view,其调用格式为: view(az,el) 5.5 图形修饰处理 5.5.1 视点处理 MATLAB提供了设置视点的函数view,其调用格式为: view(az,el) 其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5°,仰角30°。

例5-22 从不同视点观察三维曲线。 5.5.2 色彩处理 1.颜色的向量表示 例5-22 从不同视点观察三维曲线。 5.5.2 色彩处理 1.颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。向量元素在[0,1]范围取值,3个元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。

2.色图 色图(Color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。色图是m×3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。

3.三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。 shading faceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式。

shading flat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。 shading interp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。

例5-23 3种图形着色方式的效果展示。 [x,y,z]=sphere(20);colormap(copper); 例5-23 3种图形着色方式的效果展示。 程序如下: [x,y,z]=sphere(20);colormap(copper); subplot(1,3,1);surf(x,y,z); axis equal subplot(1,3,2);surf(x,y,z);shading flat; subplot(1,3,3);surf(x,y,z);shading interp;

5.5.3 光照处理 MATLAB提供了灯光设置的函数,其调用格式为: light('Color',选项1,'Style',选项2,'Position',选项3)

例5-24 光照处理后的球面。 程序如下: [x,y,z]=sphere(20);subplot(1,2,1);surf(x,y,z);axis equal; light('Posi',[0,1,1]);shading interp;hold on; plot3(0,1,1,'p');text(0,1,1,' light'); subplot(1,2,2);surf(x,y,z);axis equal; light('Posi',[1,0,1]);shading interp; hold on; plot3(1,0,1,'p'); text(1,0,1,' light');

例5-25 绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。 5.5.4 图形的裁剪处理 例5-25 绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。 程序如下: [x,y]=meshgrid(-5:0.1:5); z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4); surf(x,y,z);shading interp; pause %程序暂停 i=find(x<=0&y<=0); z1=z;z1(i)=NaN; surf(x,y,z1);shading interp; 为了展示裁剪效果,第一个曲面绘制完成后暂停,然后显示裁剪后的曲面。

5.6 图像处理与动画制作 5.6.1 图像处理 1.imread和imwrite函数 imread和imwrite函数分别用于将图像文件读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。MATLAB支持多种图像文件格式,如.bmp、.jpg、.jpeg、.tif等。

例5-26 有一图像文件flower.jpg,在图形窗口显示该图像。 2.image和imagesc函数 这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。 例5-26 有一图像文件flower.jpg,在图形窗口显示该图像。 程序如下: [x,cmap]=imread('flower.jpg'); %读取图像的数据阵和色图阵 image(x);colormap(cmap); axis image off %保持宽高比并取消坐标轴

5.6.2 动画制作 MATLAB提供getframe、moviein和movie函数进行动画制作。 1.getframe函数 getframe函数可截取一幅画面信息(称为动画中的一帧),一幅画面信息形成一个很大的列向量。显然,保存n幅图面就需一个大矩阵。

2.moviein函数 moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行速度。 3.movie函数 movie(m,n)函数播放由矩阵m所定义的画面n次,缺省时播放一次。

例5-27 绘制了peaks函数曲面并且将它绕z轴旋转。 程序如下: [X,Y,Z]=peaks(30); surf(X,Y,Z); axis([-3,3,-3,3,-10,10]); axis off; shading interp; colormap(hot); m=moviein(20); %建立一个20列大矩阵 for i=1:20 view(-37.5+24*(i-1),30) %改变视点 m(:,i)=getframe; %将图形保存到m矩阵 end movie(m,2); %播放画面2次