MATLAB基础(海大版).ppt

上传人:sh****n 文档编号:2819715 上传时间:2019-11-30 格式:PPT 页数:209 大小:1.78MB
返回 下载 相关 举报
MATLAB基础(海大版).ppt_第1页
第1页 / 共209页
MATLAB基础(海大版).ppt_第2页
第2页 / 共209页
MATLAB基础(海大版).ppt_第3页
第3页 / 共209页
点击查看更多>>
资源描述
1,HaiNan University,MATLAB 基础篇,海南大学数学系 王浩华,2,第一章 MATLAB语言概述,1.1 MATLAB发展简史 1.2 MATLAB的特点 1.3 MATLAB工作环境与实例 1.4 演示程序及帮助,3,1.1 MATLAB发展简史,一、 MATLAB的开发单位: 美国Mathworks公司,Cleve Moler博士,二、几个不同的发展时期,70年代末,Cleve Moler为讲授矩阵理论和数据分析编写了Linpack与Eispack软件包。 1984年,成立公司Mathworks,推出第二代MATLAB。内核用C编写。,4,1990年,推出系统仿真工具Simulink。 1993年,Matlab 4.0Windows版。 1994年,Matlab 4.2开始广受重视和应用。 1999年,Matlab 5.332位运算。 2000年11月,Matlab 6.0。 2001年5月,Matlab 6.1。 2002年8月,matlab 6.5 加入JIT加速器。,5,1、一个变量可以直接当作一个矩阵。* 2、一个元素可以直接当作一个复数。 * 3、用解释方式对程序加以执行。 4、数据可以通过MATLAB绘图功能实现可视化,最复杂的可视效果可以是三维坐标中的立体曲面图。,1.2 MATLAB的特点,6,5、不仅能进行数值运算,还能进行符号运算及系统仿真。 6、有多达30多个工具箱: 例如:自动控制、信号处理、图像处理、 模糊逻辑、神经网络、小波分析、 通信模拟、数理统计、偏微分方程、 最优化问题、财政金融分析等。,7,7、与其他语言程序或应用程序有方便的接口。 例如:C、Fortran、Word等。 8、大量繁杂的数学运算和分析可调用MATLAB的函数直接求解。 9、“教育部全国计算机专业课程指导委员会”已将MATLAB作为推荐课程。,8,1.3 MATLAB工作环境与实例,一、工作环境 1、MATLAB打开后缺省的工作窗口有5个:* Command Window (命令窗口) Launch Pad (发射台) Workspace (工作空间) Command History (命令历史记录) Current Directory (当前目录),9,2、程序编辑调试执行过程中还要用到的窗口有: Figure Window (图形窗口) File Editor (文本编辑窗口) Demos Window (演示窗口) Array Editor (数组编辑器窗口),10,3、各种窗口的统一操作方法, 窗口的放大和离港(undock),11, 窗口的进港(dock),12, 窗口的显示和排列,13, 窗口中内容的清除,14,4、命令窗口(Command Window),作用: 输入:数据、命令、表达式、语句 执行:命令、语句、函数、程序 编辑:命令、表达式、语句 命令提示符: 5、发射台窗口(Launch Pad) 作用: 打开各种工具箱的帮助、Demos窗口和其它相关文件或应用程序。,15,6、工作空间窗口(Workspace),作用: 显示和留存变量、数组、矩阵的数据。 在以文件方式保存之前,“工作空间”实际是内存的一个区域;保存之后,则成为外存中的一个数据文件(扩展名.mat)。 操作: 查看与清除工作空间中的变量 who whos (注意大小写) 数组内容的显示和编辑 (可结合数组编辑器窗口),16, 保存工作空间 :用file菜单或save命令, 加载工作空间:用file菜单或load命令,17,7、命令历史记录窗口(Command History ),作用: 记录并显示已执行过命令。 记录每次启动的时间。 查找曾用过命令,再次调用该命令。 8、当前目录窗口(Current Directory) 说明: 显示当前工作的文件夹路径 可以修改、重设当前路径(用菜单或path命令),18,MATLAB的路径搜索原则:,在命令窗口的命令提示符后输入一个字符串如master,MATLAB将按以下顺序开始搜索: 把master当作一个变量进行搜索,在当前工作空间中查找变量master。 把master作为一个内置函数进行搜索,查找内置函数master并执行。 查找当前文件夹中的master.m文件。 查找当前搜索路径中的M文master.m。,19,MATLAB文件类型,20,9、文本编辑窗口(file Editor), MATLAB的程序编制和运行方式: 命令行方式 M文件方式 如何获得文本编辑窗口? 方法一:在命令提示符后输入edit命令。 方法二:利用命令窗口的File|New|M-file命令。 方法三:利用命令窗口中的新建文件图标 。 使用:与Word相似。,21,10、图形窗口(Figure),作用: 用图形展示数据、函数、方程。 如何得到: 在命令窗口的提示符后输入:figure或 figure(3)。 执行一条绘图命令。 11、数组编辑器窗口(Array Editor) 作用: 对已定义过的数组进行重新编辑或修改 。 如何得到: 双击工作空间窗口中的数组名即进入此窗口。,22,二、实例,例一:求y=sin(ax)的导函数。 syms a x; y=sin(a*x); dy=diff(y) 例二:绘制函数f(x,y)=2sin( ) / 的图形。 x=-8:0.5:8; y=x; X,Y=meshgrid(x,y); R=sqrt(X.2+Y.2)+eps; Z=2*sin(R)./R; surf(X,Y,Z),23,1.4 演示程序及帮助,一、演示程序 1、什么是演示系统 演示系统实质是一种帮助系统;与一般帮助系统不同之处是它用实例而非文字来说明用法。 2、如何进入演示窗口* 方法一:在命令窗口中输入demo或demos命令。 方法二:利用任一窗口Help菜单的Demos命令。 方法三:利用发射台窗口。 3、演示主题,24,二、帮助系统,1、如何进入帮助系统 方法一:利用任一窗口 “Help”菜单。 方法二:利用发射台窗口。 2、帮助菜单,25,第二章 MATLAB数值计算,2.1 基本概念 2.2 矩阵的创建与保存 2.3 矩阵的下标与子矩阵 2.4 矩阵运算与数组的运算 2.5 矩阵运算函数与数学函数 2.6 关系运算及逻辑运算 2.7 多项式及其运算,26,MATLAB的数值计算主要是针对两类对象的运算:一是矩阵,另一是数组。 矩阵是 MATLAB 进行数值运算的基本对象,或者说默认对象。不论是标量、向量、还是矩阵,MATLAB一概以矩阵视之。 数组从数的集合的角度去认识,它也是矩阵,或者反过来,矩阵也是数组。单从形式上是不能区分数组和矩阵的, MATLAB 中数组与矩阵的真正区别所在是它们各自采用了不同的运算规则。,27,2.1 基本概念,1、变量和标量* 变量是MATLAB保存数据的工具。 变量有数值和字符两种:a=365;b=happy new year 变量命名遵守如下规则: 必须以字母开头。 可以由字母、数字和下划线共同组成。 区分大小写。 长度不超过19个。 标量是相对于向量的概念,一个单一的数字量即是标量。,28,系统默认的预定义变量,29,2、数值,每一个数据元素都是用双精度来表示、存储和运算。 有效数字:16位。 数值范围:10-30810+308 格式: 屏幕显示方式:紧凑(Compact)和松散(Loose) 其中,Loose为默选方式。 数字显示格式:MATLAB6.1共有10种之多,如下 列表所示 。,30,数字显示格式列表,注意:不论数字采用上述列表中何种显示格式,但其存储数据的格式依然是双精度格式,因而数据的精度依然得到保证。,31,3、矩阵与向量,矩阵是一个数学概念。 向量也是一个数学概念,向量是一行或一列的矩阵。 矩阵的数学运算规则是MATLAB的矩阵运算规则的一部分。 矩阵的线性相加减 矩阵的数乘(与标量乘) 矩阵与向量(一维列向量或行向量)相乘 矩阵与矩阵相乘 矩阵与矩阵求逆或相除 矩阵的各种变换,32,MATLAB在一般矩阵的数学运算规则之外还定义了的一些新的矩阵运算规则。 矩阵的幂运算* 矩阵的开方运算 矩阵的指数运算 矩阵的对数运算 矩阵在MATLAB中是当作一个整体进行运算。 * MATLAB把所有的数量(包括标量、向量、矩阵)统一当作矩阵对待。,33,4、数组,数组是程序设计语言中用到的一种数据结构,不是数学概念。 数组是由一组类型相同的数据构成的有序数据集合。 在一般程序设计语言中,程序通过循环语句对数组中的元素进行操作。不是作为一个整体进行操作。 MATLAB语言中的数组与一般程序设计语言有别。 在MATLAB中数组运算是一个整体运算,但又与矩阵运算有区别。 * 矩阵可以视为数组来运算,数组也可视为矩阵来运算。 矩阵运算是通过运算符与数组运算相区别。,34,5、函数,函数实际是系统提供的、已事先编写好的、一组可供调用的程序。 MATLAB的函数与其他语言的函数无太大区别,只是它的函数比我们熟知的任何其他语言的函数都多得多。 函数的调用格式是: 函数名(参数) 例 a=sin(b) 其意为计算b的正弦值,并将此值赋给变量a。,35,6、运算符,MATLAB的运算符分成如下几大类:算术运算符,关系运算符,逻辑运算符和特殊运算符。 各类运算符列表如下:,36,MATLAB算术运算符(表一),37,MATLAB算术运算符(表二),38,MATLAB关系运算符和逻辑运算符,39,MATLAB的特殊运算符,40,7、MATLAB的语句,MATLAB语句有两种形式: 表达式 变量=表达式 表达式由变量、常数、函数和运算符构成。 合法表达式举例: 4*sin(2*t) sqrt(2)*exp(-i*4) s*a+b/c,41,在MATLAB中,矩阵可以通过下列三种方法之一创建: 直接输入法; 利用MATLAB的内部函数创建; 从外部数据文件(*.mat)装载并创建阵。,2.2 矩阵的创建与保存,42,2.2.1 直接输入法创建矩阵,直接输入矩阵数据时,必须遵循下列规则: 矩阵的所有元素必须放在方括号 内; 矩阵元素之间必须用逗号“,”或空格分开; 矩阵行与行间用分号“;”或按回车键分隔; 矩阵元素可以是任何不含未定义变量的表达式。 例:(见操作)。*,43,MATLAB系统提供有创建下列基本矩阵的函数: ones(n) 、 ones(n,m),产生1矩阵的函数。 zeros(n)、zeros(n,m),产生0矩阵的函数。 rand(n)、rand(n,m),在01之间均匀分布的随机数矩阵。 randn(n)、randn(n,m),符合正态分布的随机数矩阵。 eye(n),产生n阶的单位矩阵。,2.2.2 利用MATLAB函数创建矩阵,44,MATLAB 有专门的文件用来保存数据,如前所述其文件扩展名为.mat。而这些以文件方式保存在外存中的数据,不论是普通变量,还是矩阵都可再次被调入内存重新使用。 save 路径文件名 变量名表 load 路径文件名,2.2.3 利用外部数据文件保存和装载矩阵,45,向量作为矩阵的一种特例,可以用前述介绍的三种方法进行创建。还可用下述两种方法生成。 利用冒号:运算生成向量 例: a=m:n a=1:10 a=m:p:n a=1:0.2:2 利用函数生成向量 例: linspace(m,n) linspace(m,n,s)linspace(0,10,5),2.2.4 向量的生成,46,2.3 矩阵的下标与子矩阵,在MATLAB系统中,矩阵(或数组)的元素都可以通过其下标来引用。其一般形式如A(i,j)。 矩阵下标的行号和列号都从1开始,与C语言从0开始有所不同。例如A(1,1)表示矩阵A首行首列的元素。 生成子阵举例: A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16; x=2,4;y=1,3; B=A(x,y) B=A(2,4,1,3) D=A(:,y) D=A(:,1,3) E=A(x,:) E=A(2,4,:),47,矩阵运算和数组运算是MATLAB数值运算的两大类型。 矩阵运算按矩阵的运算规则进行,而数组运算则按数组的运算规则进行。 矩阵运算和数组运算的运算规则已经在前面的2.1节的运算符中作过简单的介绍。 在MATLAB中,可以对矩阵进行数组运算,此时矩阵被视为数组,运算按数组运算规则进行。 在MATLAB中,可以对数组进行矩阵运算,此时数组被视为矩阵,运算按矩阵运算规则进行。,2.4 矩阵运算与数组运算,48,2.4.1 矩阵加减与数组加减,矩阵的加减法的规则与数组没有区别,运算符也相同,可分成如下两种情况: 若参与运算的两矩阵的阶数相同,则加减运算是对应元素相加减,其结果与任一参与运算的矩阵的阶数相同。 若参与运算的两矩阵的阶数不同,只能是其中之一为标量,运算规则是把标量加减到矩阵的每一元素上,其结果是与参与运算的矩阵同阶的矩阵。,49,2.4.2 矩阵乘与数组乘,矩阵的乘法运算中包含有普通标量乘、向量乘与矩阵乘。 例: a=3;b=6; ca=a*b,cb=b*a ca=cb ? a1=2;b1=1 2 3;c1a=a1*b1,c1b=b1*a1 c1a=c1b ? a3=1 2 3;3 2 1;2 3 1; d1=a1*a3,d2=a3*a1 d1=d2 ? a2=2;3;2;b2=1 3 2;c2=a2*b2(矩阵);c22=b2*a2(数) a22=2 3 2;c2a=a22*b2, c2b=a2*a2 b3=2 3 1;4 3 2;3 2 1; b2*b3 b3*b2,50,c3=a3*b3; c33=b3*a3, c3 c33 a4=1 2 3 4;3 1 4 5;4 3 2 1; b4=1 2 3;4 3 2; 5 3 2;1 2 3; c4=a4*b4,c44=b4*a4 真正的矩阵(或向量)乘,要求参与运算的矩阵内阶相同。不满足普通数(标量)乘的交换律,即A*BB*A。,51,数组乘是MATLAB规定的一种运算。 例: a=3;b=6;ca=a.*b,cb= b.*a ca=cb? a1=2;b1=1 2 3;c1=a1.*b1, c11=b1.*a1 a3=1 2 3;3 2 1;2 3 1;d1=a1.*a3,d2=a3.*a1 a2=2;3;2;b2=1 3 2;c2=a2.*b2; c2=b2.*a2 a22=2 3 2;c22=a22.*b2, c222=a2.*a2 a3=1 2 3;3 2 1;2 3 1;d3=a2.*a3,d4=a22.*a3,52,b3=2 3 1;4 3 2;3 2 1; c3=a3.*b3 a4=1 2 3 4;3 1 4 5;4 3 2 1; b4=1 2 3;4 3 2; 5 3 2;1 2 3; c4=a4.*b4 通过上述实例操作,可以得出结论: 有标量参与的运算用数组乘和用矩阵乘结果相同* ; 对向量施以数组乘,向量必须维数* (元素个数)相等; 对矩阵施以数组乘,其阶数*必须相等。,53,矩阵除分右除和左除。 矩阵右除包含了普通标量除、向量除和矩阵右乘逆。 例:a=3;b=6;c=a/b a1=2;b1=1 2 3;c1=b1/a1 (c1=a1/b1 ? ) a3=1 2 3;3 2 1;2 3 1;d1=a3/a1,d2=a1/a3 ? a2=2;3;2;b2=1 3 2;c2=a2/b2, c2=b2/a2? a22=2 3 2;b22=1 3 2;(c22=a22/b22 ?) * a222=2;3;2;b222=1;3;2;(c222=a222/b222?) *,2.4.3 矩阵除与数组除,54,A2=2;3;2;B2=1;3; C2=A2/B2 * a2=2;3;2;b2=1 3 2; a3=1 2 3;3 2 1;2 3 1; a2/a3;a3/a2 * a3/b2;b2/a3 * b3=2 3 1;4 3 2;3 2 1; c3=a3/b3;c33=b3/a3 ( 实际c3=a3*inv(b3), c33=b3*inv(a3) ) a4=1 2 3 4;3 1 4 5;4 3 2 1; b4=1 2 3;4 3 2; 5 3 2;1 2 3; c4=a4/b4 c44=b4/a4,55,矩阵左除(AB)实际是用A逆左乘B。 例:a=3;b=6;c=ab, cc=ba a1=2;b1=1 2 3;c1=a1b1 (c1=b1a1 ? ) * a3=1 2 3;3 2 1;2 3 1;d1=a1a3;d2=a3a1 a2=2;3;2;b2=1 3 2;a2/a1 c2=a2b2 c2=b2a2? a22=2 3 2;b22=1 3 2;(c22=a22/b22 ?) * b22a=1 2;c22a=a22/b22a * a222=2;3;2;b222=1;3;2;(c222=a222b222?) * b2a3 a3b2,56,a2=2;3;2;b2=1 3 2; a3=1 2 3;3 2 1;2 3 1; a2a3;a3a2 * b3=2 3 1;4 3 2;3 2 1; c3=a3b3,c33=b3a3 ( 实际c3=inv(a3)*b3, c33=inv(b3)*a3 ) a4=1 2 3 4;3 1 4 5;4 3 2 1; b4=1 2 3;4 3 2; 5 3 2;1 2 3; c4=a4b4 c44=b4a4,57,数组除分右除和左除。 例: a1=3;b1=2; a1./b1=a1/b1=b1.a1=b1a1 b1./a1=b1/a1=a1.b1=a1b1 a2=2;b2=1 2 3;b22=2;4;1; a2./b2=b2.a2 * a2/b2没有定义。b2a2另有定义 b2./a2=b2/a2=a2.b2=a2b2 a2./b22=b22.a2 * b22a2没有定义。a2/b22另有定义 b22./a2=b22/a2=a2.b22=a2b22 a3=3 2 1;4 6 2;3 4 3; a2./a3=a3.a2 * a2/a3、a3a2没有定义,58,b2=1 2 3;b22=2;4;1; a3=3 2 1;4 6 2;3 4 3; 上述各量之间的数组左右除均无定义。 B2=3 4 6;B22=4;2;3; b2./B2=B2.b2 b2.B2=B2./b2 b22./B22=B22.b22 b22.B22=B22./b22 b3=2 3 1;4 3 2;3 2 1; a3./b3=b3.a3 a3.b3=b3./a3 a4=1 2 3 4;3 1 4 5;4 3 2 1; b4=1 2 3;4 3 2; 5 3 2;1 2 3; a4.b4 b4.a4 a4./b4 b4./a4均无定义。,59,2.4.4 矩阵乘方与数组乘方,矩阵乘方实际包括标量乘方和标量与矩阵的乘方关系。 例如: a=3;b=2; ab ba a1=2 3 4; a1b ba1没有定义。 a2=4;5;6; a2b ba2没有定义。 a3=2 3 4;6 5 4;3 2 1; a3b ba3 b3=3 2 1;4 5 6;3 4 5; a3b3 b3a3没有定义。 注意:只有标量和标量、标量和方阵之间的乘方有定义。,60,数组乘方包括标量与标量、标量与向量、标量与数组的乘方关系。 例如: a=3;b=2; a.b b.a a1=2 3 4; a1.b b.a1有定义。 a2=4;5;6; a2.b b.a2有定义。 a3=2 3 4;6 5 4;3 2 1; a3.b b.a3 a3.a1 a3.a2 a1.a3 a2.a3没有定义。 b3=3 2 1;4 5 6;3 4 5; a3.b3 b3.a3有定义。 b4=3 2 1;4 5 6;3 4 5;3 2 3; a3.b4 b4.a3无定义 注意:方阵和方阵之间有定义,向量和矩阵之间的数组乘方无定义。,61,矩阵开方和数组开方均由函数实现。矩阵开方的函数是sqrtm(x),而数组开方的函数是sqrt(x)。 例如: a=5;sqrtm(a)=sqrt(a)=2.2361 a1=2 4 5;a2=3;5;6; sqrtm(a1),sqrtm(a2)没有定义。 sqrt(a1), sqrt(a2)有定义。 a3=3 5 7;3 2 1;4 6 8; sqrtm(a3), sqrt(a3)均有定义,但运算规则及结果不同。 a4=4 5 3 2;8 6 4 2;3 5 7 9; sqrtm(a4)没有定义, sqrt(a4)有定义。 注意:矩阵开方运算只适用于标量或方阵。,2.4.5 矩阵开方与数组开方,62,2.5 矩阵运算函数与数学函数,2.5.1 常用的矩阵运算函数 1、size( )函数 测试矩阵的阶数。d=size(a); n,m=size(a) 2、length( )函数 测试向量的维数和矩阵的列数。 b=ones(1,100); d=length(b) e=length(a) 3、prod( )函数 矩阵元素的求积。 prod(a); prod(a,k) 4、sum( )函数 矩阵元素的求和。sum(a); sum(a,k) 5、max( )函数 min( )函数 mean( )函数 求出矩阵元素的最大值。max(a); max(a,k),63,2.5.2 常用的数学函数,MATLAB提供了几乎所有的初等函数,如三角、指数对数、复数等的运算函数。下面列一简表说明。,64,2.6 关系运算及逻辑运算,2.6.1 关系运算 关系运算的规则: 参与运算的矩阵必须是同阶矩阵或其中之一为标量。 同阶矩阵作关系运算时,结果仍为同阶矩阵,矩阵中的元素值是参与运算的两矩阵对应元素作关系比较的结果值,即或0或1。 当参与运算的对象有一是标量时,结果仍为矩阵,其阶数与运算矩阵同。而结果阵中的元素值是运算矩阵每一元素与标量作关系比较的结果,即或0或1。 关系运算比算术运算有更高优先权。,65,2.6.2 逻辑运算,逻辑运算的规则: 参与运算的矩阵必须是同阶矩阵或其中之一为标量。 同阶矩阵作逻辑运算时,结果仍为同阶矩阵,矩阵中的元素值是参与运算的两矩阵对应元素作逻辑运算的结果值,即或0或1。 当参与运算的对象有一是标量时,结果仍为矩阵,其阶数与运算矩阵同。而结果阵中的元素值是运算矩阵每一元素与标量作逻辑运算的结果,即或0或1。,66,2.7 多项式及其运算,1、多项式及其MATLAB表达方式 多项式: S3+2S2+2S+1 MATLAB表达法: A=1 2 2 1 2、多项式求根 B=1 3 2; roots(B) 3、由指定根求多项式 p=2,1; ploy(p),67,4、多项式相乘(卷积) A=1 3 2; B=1 2 1; R=conv(A,B) 5、多项式相除(解卷) R=1 5 9 7 2; A=1 3 2; B,t=deconv(R,A),68,第三章 MATLAB绘图,3.1 绘制基本二维图形 3.2 绘制特殊二维图形 3.3 绘制三维图形 3.4 图形控制 3.5 低层图形属性设置,69,科学计算所得的结果往往是一组或一堆数据,这样的数据不便利用。 为了利用这些数据更加直观地解释说明问题,传统的做法通常是将数据制成表格,以备查用。 其实,更直观的表现这些数据的方法是把它们绘制成图形,这便是科学计算结果的图形化或称可视化。 MATLAB提供了将科学计算数据图形化的功能,这就是本章要介绍的MATLAB的绘图功能。 MATLAB可以对给出的原始数据绘制二维、三维甚至四维的图形。,70,在X-Y直角坐标系中绘制二维点线图,主要使用plot函数。 1、函数使用的语法格式为: plot(y) 以y的序号为x轴,按y中各元素值绘图 plot(x1,y1, x2,y2.) 以x、y配对,绘制多组图形 plot(x1,y1,option1, x2,y2, option2.) 对每一不同配对的x、y曲线图形设置不同属性(如线型、标志符、曲线颜色等),3.1.1 创建简单的二维直角坐标图形,3.1 绘制基本二维图形,71,2、举例: 例一:离散函数可视化 在X-Y坐标中,将离散函数y=|(n-6)|-1 做成点图。 n=1:12; y=1./abs(n-6); plot(y,*) grid on 例二:连续函数可视化 在X-Y直角坐标中,绘制正弦函数y=sin(x)的曲线。 clear all; x=linspace(0,2*pi,100); y=sin(x); plot(x,y),72,例三:矩阵作为绘图数据的情形 第一种情形:将行向量A做成X-Y坐标曲线图。 A=1 2 3 4 6 6 8 9; plot(A); grid on 第二种情形:将列向量A做成X-Y坐标曲线图。 A=1;2;3;3;5;6;8;9; plot(A); grid on 第三种情形:将矩阵A做成X-Y坐标曲线图。 A=2 3;5 6;10 12;8 9;3 4; plot(A); grid on 说明:1、无论是第一种情形,还是第二种情形,A向量对应的就是前述绘图中的函数y。前两例的y实际都是一个行向量并且其元素即作为Y轴的取值,自变量是另一行向量,其元素值作为X轴坐标值。 2、对矩阵A绘图时,MATLAB的处理是把每一列视为一条曲线,有多少列图中就有多少条曲线,每一个列元素作为Y轴的取值,而行号则是作为X轴坐标值。,73,3.1.2 修饰简单的二维图形,修饰图形主要是给图形的线条规定不同的线型、标志符号、颜色,加上图形标题、说明文字、坐标轴、图例,设置坐标尺寸比例等。 1、改变颜色与线形 MATLAB 绘制的曲线默认颜色是兰色,默认线型是实线。 但前述plot函数第三种引用格式中,有一个option项,利用它,可以对曲线颜色、线型等属性,进行修改,具体的办法是将option项换成下表对应的颜色、标志或线型符号。例plot(y,k*:),例中单引号里的k表黑色,*表标志符号,:表线型,其他各种参数的意义如下表所示:,74,基本颜色、标志符号及线型,75,2、 增加图例及文字说明信息 如果引用plot函数的第一种格式,通常也不加图例和说明文字。如果要加,MATLAB设计了另外两个函数:一个是图例函数legend( ),另一是文本函数text( ),下面举例说明。 例四:对例二中的正弦曲线重新设置曲线颜色、标志符号、线型,添加图例和文本说明。 clear all; x=linspace(0,2*pi,100); y=sin(x); plot(x,y,-*r); 或plot(x,y,-m,x,y,*g) legend(y=sin(x); text(1.4,0.91,波峰),76,3、 增加坐标轴说明与图标题 单纯的plot函数不会说明坐标轴与图标题,如果要加,得用函数,与坐标轴相关函数有三个:分别是 xlabel( )、ylabel( )和zlabel( )。图标题函数则是title( )函数。下面举例说明。 例五:在例四基础上,增加坐标轴说明与图标题。 clear all; x=linspace(0,2*pi,100); y=sin(x); plot(x,y,-m,x,y,*g); legend(y=sin(x); text(1.4,0.91,波峰); xlabel(自变量 x 轴);ylabel(函数 y 轴); title(正弦函数曲线); grid on,77,4、 定制图形坐标轴 对坐标的控制设置主要使用下表提供的函数及参数。,78,从上述列表中可见,坐标轴的控制依靠axis( )函数,对其设置则依靠其括号中的参数。但参数的引用是可加也可不加括号的,表中示例已说明此问题。现举一例加以说明。 例六:在同一X-Y坐标系中绘制正弦和余弦两曲线。 clear all,close all; x=linspace(0,2*pi,30); y=sin(x);z=cos(x); plot(x,y,-m,x,z,-b); title(正、余弦曲线); legend(y=sin(x),z=cos(x); xlabel(自变量 x 轴);ylabel(函数 y-z 轴); axis (square,equal);* grid on,79,3.1.3 二维图形函数库,1、下面用列表方式给出与二维图形处理有关的函数库。,80,2、 基本绘图函数说明 MATLAB中的基本的二维绘图函数有以下几种: plot:X轴和Y轴均为线性刻度。 loglog: X轴和Y轴均为对数刻度。 semilogx:X轴为对数刻度,Y为线性刻度。 semilogy:X轴为线性刻度,Y为对数刻度。 subplot: plotyy: ploar:,81,在同一图形中绘制多条曲线可以有如下几种解决方案: 1、用plot命令的第三种格式: Plot(x1,y1,option1, x2,y2, option2.) 例七:用图形表示连续调制波形 y=sin(t)sin(9t) 及其包络线。 clear all,close all; t=(0:pi/100:pi); y1=1;-1*sin(t); y2=sin(t).*sin(9*t); t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3); plot(t,y1,r:,t,y2,b,t3,y3, go) axis(0,pi,-1,1) ; grid,3.1.4 绘制多条曲线,82,2、用hold on 加 plot 命令 例八:用hold on和plot命令重复前例。 clear all,close all; hold on; t=(0:pi/100:pi); y1=1;-1*sin(t); plot(t,y1,r:); y2=sin(t).*sin(9*t); plot(t,y2, b ); t3=pi*(0:9)/9; y3=sin(t3).*sin(9*t3); plot(t3,y3, go ) axis(0,pi,-1,1) ; grid,83,3、用plotyy 命令 例九:用plotyy绘制两条幅度差较大的曲线。 clear all,close all; t=0:0.2:4*pi; y1=exp(-0.1*t).*sin(t); y2=5*exp(-0.5*t).*sin(5*t+1); plotyy(t,y1, t,y2); xlabel(时间 t 轴); gtext( y1轴); gtext( y2轴); legend( y1=exp(-0.1t)*sin(t) ); title(双纵坐标曲线) grid on; 注意:1、plotyy函数只能在一幅图中同时绘制两条曲线,如果要绘制两条以上的曲线必须在其后借助hold on命令。 2、gtext中的文本须借助鼠标帮助定位,比text命令显得灵活。,84,4、用plot函数和矩阵 例十:用plot函数和矩阵重复前例。 clear all,close all; t=0:0.2:4*pi; y1=exp(-0.1*t).*sin(t); y2=5*exp(-0.5*t).*sin(5*t+1); y3=sin(t); Y=y1;y2;y3; plot(t,Y); xlabel(时间 t 轴);ylabel(函数 y 轴); gtext( y1); gtext( y2); gtext( y3) legend(y1=exp(-0.1t)*sin(t) , y2=exp(-0.5t)*sin(5t+1) , y3=sin(t); title(正弦曲线及其衰减曲线); grid on; axis(0,4*pi,-4,5),85,3.1.5 二维极坐标图形和复数图形,1、二维极坐标图形 除直角坐标外,二维极坐标图形是另一类重要的基本二维图形,其绘图函数是polar( ),其引用格式如下: polar(theta,rho) theta为角度,用弧度度量,rho为半径。 polar(theta,rho,option) option含义同plot函数。 举例: 例1、t = 0:.01:2*pi; polar(t,sin(2*t).*cos(2*t),-r),86,例2、clear all,close all; t = 0:0.01:2*pi; r1=(1+cos(t); r2=2*sqrt(cos(t).2); polar(t,r1,m); legend( r1=(1+cost) ) hold on polar(t,r2, :b ); title(双纽线和心脏线极坐标图); gtext( r1 );gtext( r2 ),87,2、复数图形 当用plot( )函数对复数z进行绘图时,根据对函数的引用方式不同,分两种情况处理: 第一:plot(z)方式引用时,MATLAB将把复数的实部作为X坐标,虚部作为Y坐标进行绘图。 第二:plot(t,z)方式引用时,则z中的虚数部分将被丢弃。 举例: clear all, close all; t=0:0.05:4*pi; z=exp(-0.1+i)*t); plot(z) figure(2) plot(t,z),88,在实际应用中, MATLAB考虑到比较和分析离散数据的需要,提供了许多特殊的二维图形,直方图就是其中之一,其函数名为bar( )或barh( )。 1、函数使用的语法格式为: bar(y) 将y向量各元素绘成直方图的各条,x默认为x=1:m bar(x,y) 绘制mn矩阵的直方图,y为mn矩阵或向量,x必须单向递增。 bar(x,y,width,style,option) width用于设长方条的宽度;style用于设长条的排列是分组group,还是堆积stack;option意义同前。,3.2.1 直方图和水平直方图,3.2 绘制特殊二维图形,89,2、举例: 例一:绘制一个随机数向量的直方图。 clear all,close all; x=1:10; y=rand(size(x); bar(x,y); 例二:绘制一矩阵直方图。 clear all,close all; x=1:5; y=5 3 7;9 2 10;12 0 1;18 3 2;2 9 6; bar(x,y);figure(2);bar(x,y,0.6);figure(3); bar(x,y, stack, m); figure(4);barh(x,y),90,3.2.2 饼图,饼图与直方图的功能相似,都可表示数据组中某个分量在总量中所占的比例。其函数引用名为pie( )。 1、函数使用的语法格式为: pie(x) 绘制向量x的饼图。x中的1元素对应饼图1扇区片。 pie(x,label) 用来标注饼图中片的名称。 pie(x,explode) 将某个扇片从x饼图中分离。explode为一与x向量大小相同的向量,其中的元素取值为0或非0值。非0值对应的扇片号将会从此饼图分离。,91,2、举例: 例三:用某工厂4个季度的生产量绘制一饼图。 clear all,close all; x=11.4,23.5,35.4,15.6; explode=zeros(size(x); value,offset=min(x); explode(offset)=1; pie(x,explode); title(某工厂4个季度产量分布图); gtext(第1季); gtext(第2季); gtext(第3季); gtext(第4季);,92,3.2.3 柄图,柄图又称火柴杆图或针状图,主要用来绘制数位信号。其函数引用名为stem( ),引用格式如下: stem(y) y向量中的元素值绘成柄长,各柄沿x方向等间距排列,x值自动产生。当y为矩阵时,按行分成不同的柄,而每一行各元素的值在同一个柄上表示出来。 stem(x,y,fill,option) 用x与y的列绘图。x和y为大小相同的向量或矩阵。另外,x可以是行或列向量,y为具有length(x)行的矩阵。fill指定对柄圈进行颜色填充, option意义与前同。 以下为一简单实例: x=linspace(0,10,50); y=sin(x).*exp(-x/3); stem(x,y,fill,m),93,3.2.4 阶梯图,和柄图功能类似,阶梯图也常用来绘制横坐标是时间序列的数位信号。其函数引用名为stairs( ),引用格式如下: stairs(y) stairs(x,y) stairs(x,y,option) 变量的含义与stem( )函数类似。 以下为一简单实例: x=linspace(0,10,50); y=sin(x).*exp(-x/3); stairs(x,y,m); title(stairs函数),94,3.2.5 频率累计柱状图,频率累计柱状图主要用于在直角坐标系中统计在一定范围内数据的频数,以显示数据的分布情况和统计特性。其函数引用名为hist( ),引用格式如下: n=hist(y) 把y中数据划分成10组进行统计,并画出10个柱形。 n=hist(y,x) y为待统计量,x为标量时指定分组数;x为向量时,以该向量中各元素为中心进行统计,柱状数即为x向量的个数。 n=hist(y,n) y为待统计量,n为要绘的柱状数。 以下为一简单实例: x=-2:0.2:2; y=randn(10000,1); hist(y,x); title(hist函数),95,3.2.6 等高线图,等高线图*又称等值线图。等高线图在地理、工程等方面应用很广泛,其二维等高线图的绘制命令是contour( )。 1、函数引用的语法格式 contour(Z)、contour(Z,n)、contour(Z,v) Z是一个矩阵,上述命令绘制矩阵Z表示的二元函数的等高线,即绘制曲面上点坐标(i,j,Zij)的等高线。 n用于规定等高线的条数,默认值为10。 v为一向量,按向量v的元素指定的值绘制相应的等高线,每条等高线对应一个v(i),等高线的条数为向量v的维数。,96,contour(X,Y,Z)、contour(X,Y,Z,n)、contour(X,Y,Z,v) 绘制Z的等值线图。X和Y为向量,用于指定x轴和y轴的范围。当X和Y为矩阵时,绘制以矩阵元素(Xij,Yij,Zij)为空间坐标的曲面的等高线图。 contour(,option) 上述两组六个函数引用格式中都可以对曲线的线型、颜色和标志重新进行说明。 2、举例 例四:绘制曲面函数z=xe-(x2+y2) 当x和y取值范围在-2到2之间时的等高线。 X,Y=meshgrid(-2:0.2:2,-2:0.2:2); Z=X.*exp(-X.2-Y.2); contour(X,Y,Z,20),97,例五:绘制峰形函数 peaks 的等高线。 峰形函数peaks是MATLAB为方便测试立体绘图提供的,该函数在MATLAB中表示为: z=3*(1-x).2.*exp(-(x.2)-(y+1).2)-10*(x/5-x.3-y.5).*exp(-x.2-y.2)-1/3*exp(-(x+1).2-y.2) 显然,它是一个在三维坐标中的立体曲面,它的等高线可以用如下程序绘制出来。 clear all, close all; X,Y,Z=peaks; contour(Z,20); figure(2); contour(X,Y,Z,20);,98,3.3 绘制三维图形,MATLAB可以用来绘制三维曲线和曲面图,并且可以对这些图形进行视角、光影效果、颜色配置、消隐和透视等特殊效果处理。 创建三维图形的具体步骤如下: 1、准备绘图数据,这些数据可以是实际工作中采集的数据,也可用各种命令或函数创建。 2、调用三维绘图命令,例如plot3()、mesh()、surf()等。 3、修饰图形,例如标注坐标轴、设置视角、设置光源、改变着色模式等。,99,实现三维线性绘图的函数是plot3(),实际是plot()在三维情况下的扩展。主要不同是多出一个坐标轴,其它无太大差别。其一般格式为: plot3(x1,y1,z1,op1,x2,y2,z2,op2) 式中xn,yn,zn可以是向量或矩阵。opn用来指定颜色、标志符号和线形等。 总的来说,plot3( ) 可用来画一个单变量的三维函数,如下例所示,该例将绘制一串宝石项链。,3.3.1 三维线性图,100,用三角函数和plot3()绘制宝石项链 t=(0:0.02:2)*pi; x=sin(t); y=cos(t); z=cos(2*t); plot3(x,y,z,b-,x,y,z, md); view(-82,58); box on; legend(链, 宝石); title(三角函数模绘宝石项链),101,1、x-y平面栅格点坐标矩阵的生成 在数学上,函数z=f(x,y)的图形是三维空间的曲面,在MATLAB 中,总是假设函数 z=f(x,y) 是定义在一个矩形区域 D=xmin,xmax ymin,ymax 上的。 为了在区域D上绘制三维曲面,MATLAB 首先将x 坐标区间 xmin,xmax在 x 方向分成 m份,将 ymin,ymax 在y方向分成 n 份,由各划分点分别作平行于坐标轴的线段,将区域分成mn个小矩形块,由此来计算对应栅格点的函数值。 对应每个小矩形,在空间中(z方向)可以决定出4个顶点(xi,yi, f(xi,yi),连接4个顶点得到一个(三维)空间中的四边形片。,3.3.2 三维网线与网面图,102,把所有这些四边形片连接在一起,便构成了函数z 定义在区域D上的空间网格曲面。 由此可见,要绘制z=f(x,y)的三维网格曲面图,首先必须生成x-y平面上的栅格坐标数值阵。函数meshgrid( )可以解决这一问题,其调用格式如下: X,Y=meshgrid(x,y) 例如:x=0:1:4; y=0:1:3; X,Y=meshgrid(x,y), 所得X和Y矩阵是:X= Y = 0 1 2 3 4 0 0 0 0 0 0 1 2 3 4 1 1 1 1 1 0 1 2 3 4 2 2 2 2 2 0 1 2 3 4 3 3 3 3 3,103,2、曲面绘图的步骤和函数调用的语法格式 MATLAB绘制网线图和网面图的函数分别是mesh()和surf(),其具体操作步骤是: 用函数meshgrid()生成平面网格点矩阵X,Y; 由X,Y计算函数数值矩阵Z; 用mesh()绘制网线图,用surf()绘制网面图。 函数mesh()的调用语法格式: mesh(X,Y,Z) 由3个矩阵X、Y、Z绘制空间网线图,即以矩阵 元素(Xij,Yij,Zij)为空间坐标在空间描点作图, 点与点间用线段连接,线的颜色随Z值即空间高 度的不同而变化,也可通过colormap()函数指定 网格线颜色。,104,mesh(x,y,Z) 由n维向量x,m维向量y对mn矩阵Z绘制网线图, 坐标为(x(i),y(i),Z(i,j)。 mesh(Z) 以矩阵Z中元素的下标为x、y的值,相应元素值为 z制作矩阵Z的空间网格图,即x=1:n,y=1:m,也 就是把xy平面等距地划分为mn个小矩阵单元并 作图。 mesh(,C) C为颜色矩阵。 函数surf()的语法格式类似于mesh(),区别在于surf()函数要对网线间的网线元进行填充,形成表面图。,105,3、应用举例 例1:椭圆抛物面 clear all,close all; x=-4:0.2:4; y=x; X,Y=meshgrid(x,y); Z=X.2/9+Y.2/9; mesh(X,Y,Z); title(椭圆抛物面网线图) figure(2) surf(X,Y,Z); title(椭圆抛物面网面图),106,例2:马鞍面 clear all,close all; x=-4:0.2:4; y=x; X,Y=meshgrid(x,y); Z=X.2/9-Y.2/9; mesh(X,Y,Z); title(马鞍面网线图) figure(2) surf(X,Y,Z); title(马鞍面网面图),107,例3:阔边帽面 clear all,close all; x=-7.5:0.5:7.5; y=x; X,Y=meshgrid(x,y); R=sqrt(X.2+Y.2)+eps; Z=sin(R)./R; mesh(X,Y,Z); title(阔边帽面网线图) figure(2) surf(X,Y,Z); title(阔边帽面网面图),108,例4:峰形图 peaks函数是MATLAB为方便测试立体绘图提供的,该函数可以产生一个有致的曲面,包含3个局部极大点及3个极小点。其具体的函数表达式在前一节有关等高线的举例中已经给出。 下面给出绘制其三维曲面的程序: clear all,close all; mesh(peaks); title(峰形函数网线图) figure(2) surf(peaks); title(峰形函数网面图),109,例5:等高线图 在前一节特殊二维图形绘制中,曾经介绍过二维等高线,即平面中绘制的等高线。其实在三维空间也可绘制等高线,而且此时的等高线的确已是名符其实的等高线,因为它由立体三维空间中相等高线的曲线组成。 下面是对峰形函数peaks绘制三维等高线的程序: clear all,close all; X,Y,Z=peaks; contour3(Z,20) title(峰形函数等高线之一) figure(2) contour3(X,Y,Z,20); title(峰形函数等高线之二),110,在 MATLAB 中,三维函数还有 meshc() 、meshz() 、surfc()、
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!