




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Matlab 软件应用与开发,主讲教师:尹 凤 联系方式:66641(短号) ,课程安排,Matlab简介 Matlab基础知识 数组 Matlab语言程序设计 符号计算和符号微积分 Matlab科学绘图 Matlab在数值分析、优化中的应用,1.1 初始Matlab,Matlab是MathWorks公司的产品,是一个为科学和工程 计算而专门设计的高级交互式软件包。Matlab环境集成了图 示与精确的数值计算,是一个可以完成各种计算和数据可视 化的强有力的工具。Matlab可以进行矩阵运算、绘制函数和 数据、创建用户界面、与Fortran、C语言混合编程等,主要 应用于工程计算、控制设计、信号
2、处理与通讯、图像处理、 信号检测、金融建模设计与分析等领域。,1.2 Matlab的历史背景,Matlab是Matrix(矩阵)和Laboratory(实验室)两个英语单词的 前3个字母的组合。它一开始是美国新墨西哥大学计算机系 主任Clever Moler博士在20世纪70年代后期为Linpack和 Eispack这两个矩阵运算的软件包编写的接口程序,目的是 方便所设立的线性代数课程的教学,当时为这个接口程序取 了一个名字叫做Matlab。在以后的一段时间,Matlab在很多 大学里作为教学辅助软件使用。1983年,工程师John Little 和Clever Moler博士,用C语言开发了
3、Matlab的第二代专业 版本,这一版本同时具有了数值计算和数据可视化的功能。,1.3 Matlab的特点,Matlab操作简单,功能强大,应用广泛。它具有编程效率 高、用户使用方便、扩充能力强、语句简单、高效方便的矩 阵和数组运算、方便的绘图功能、开放的源程序等特点。 Matlab具有很多有用的工具箱,如通讯工具箱、控制系统 工具箱、财政金融工具箱、图像处理工具箱、神经网络工具 箱、优化工具箱、信号处理工具箱、统计工具箱、小波工具 箱等。 最新的版本是2009年3月6日发布的Matlab 7.8(R2009a)。,1.4 Matlab 7.0 的安装,网上下载的Matlab 7.0共三个*.
4、ISO后缀名的映像文件。为 了提高安装速度,建议下载一款虚拟光驱软件(如DAEMON Tools)安装映像文件。首先用虚拟光驱软件载入CD1的ISO文 件,进入虚拟光盘点击setup.exe文件,进入安装画面。,Matlab 7.0的安装(续1),如果用户以前安装了Matlab,可以选择“Update license without installing anything,using a new PLP”选项升级。否 则直接点击“Next”进入用户信息和注册码输入界面。进入虚 拟光盘Crack文件夹点击keygen.exe,复制下安装密码填入注 册码输入框。,Matlab 7.0 的安装(续2
5、),点击“Next”进入使用协议界面,选择“Yes”即可, 单击“Next”进入安装功能选项对话框。,Matlab 7.0 的安装(续3),点击“Next”进入“安装路径”对话框。,Matlab 7.0的安装(续4),进入安装功能界面,只要单击“Install”就可以进入文件复制界 面,开始安装。,Matlab 7.0 的安装(续5),第一张光盘复制完成后,安装向导会弹出更换光盘提示 框, 通过虚拟光驱软件载入CD2的映像文件,单击提示框“OK”键 继续安装,直到文件复制完成。,1.5 如何学习Matlab,Matlab的网络资源 WWW网站 匿名FTP网站 Matlab中国论坛 查看帮助,使
6、用help命令(help +函数名) 多上机实验,熟能生巧,2. Matlab的桌面和桌面工具,2.1命令窗口,命令窗口:是用户与Matlab交互的工具,是Matlab 执行函数命令的窗口。默认情况下,命令窗口总是 打开的。7.0版本中,通过选取【 Desktop 】 【 Command Window 】; 命令窗口控制函数: home:移动光标到左上角 clc:清除命令窗口(工作空间的变量清除用命令clear) 命令历史窗口:在命令窗口每执行一条命令,都将 在历史窗口记录下来。反过来,在命令历史窗口只 须双击某条历史命令,该命令就会在命令窗口重新 执行一次。,2.2 当前目录浏览器和搜索路径
7、,1)当前目录浏览器 Matlab将许多内部函数放在不同的目录下,在调 用函数时,首先查看当前目录,然后查看搜索路径 中的目录。任何需要执行的文件都必须放在当前目 录或搜索路径中,文件才能顺利运行。可以在命令 窗口输入cd命令改变当前目录。一种改变当前目录 快速而又高效的方法是使用桌面上的目录工具条。,2)搜索路径,文件在执行时必须位于当前目录或者是搜索路 径中。使用path命令可以查看Matlab默认的搜索 路径。 例2.1 path MATLABPATH D:MATLAB701toolboxmatlabgeneral D:MATLAB701toolboxmatlabops 例2.2 将自己
8、的目录添加到搜索路径中、删除已有搜索路径、 改变搜索顺序。 pathtool,在Set Path对话框中设置。,3)常用命令,clear:清除当前工作空间的变量 例2.3 clear %清除当前工作空间的所有变量 clear var1 var2 %清除变量var1、var2 clear a* %清除以a开头的变量 who:查看当前工作空间的所有变量(信息简短) whos:作用同who。给出变量的大小、数据类 型等具体内容。,3.数组,数组的创建 数组中元素的引用和变形 数组运算 数组操作 字符串和数组 矩阵运算 矩阵特征参数,3.1数组的创建,3.1.1 构造数组 可以通过键入数组中每个元素的
9、值来建立并输入一个数 组,当数组中的元素个数较少时,这种方法非常适用。 创建一个数组,只须以左方括号开始,以逗号或空格为间 隔输入每行元素值,各行元素间以分号为间隔,最后以右方 括号结尾即可。 例3.1 a=0,1,2,3,4 5 6 7,8,9 a =0 1 2 3 4 5 6 7 8 9 cos(a) ans = Columns 1 through 8 1.0000 0.5403 -0.4161 -0.9900 -0.6536 0.2837 0.9602 0.7539 Columns 9 through 10 -0.1455 -0.9111,3.1.2 创建数组的常用方法,1)冒号法。其基
10、本格式为: X=初值:增量:终值 返回值X是从初值开始,以增量为步长,直到不超过终值 的所有元素所构成的向量。默认步长为1,可以省略不写。 例 3.2 a=1:1.5:8 a= 1.0000 2.5000 4.0000 5.5000 7.0000 a=3:-pi:-5 a = 3.0000 -0.1416 -3.2832,2)调用函数linspace或logspace,函数linspace(a,b,n)返回以a为起点、b为终点的等间距的 共n个元素的数组。函数logspace与linspace类似,它相当于 在linspace命令的基础上再对每个元素做10的指数幂运算。 例3.3 linspa
11、ce(0,1,6) ans = 0 0.2000 0.4000 0.6000 0.8000 1.0000 logspace(0,1,6) ans = 1.0000 1.5849 2.5119 3.9811 6.3096 10.0000,3)其它方法创建数组,对于那些既不是线性等距又不是对数等距的数组,可以借 助下标编址和表达式相结合的方法来避免重复输入数据。 例3.4 x=1:2:10; y=0:-1:-5; z=x,y z = 1 3 5 7 9 0 -1 -2 -3 -4 -5 思考:如果输入z=x;y,输出结果会是怎样?,3.2 数组中元素的引用和变形,引用数组中的元素是利用元素的下标。
12、x(n)表示数组中的 第n个元素。利用冒号可以访问多个元素。 例3.5 x=1:-2:-20; %定义数组 x(5) %访问x的第5个元素 ans = -7 x(1:2:7) %访问x的第1,3,5,7个元素 ans = 1 -3 -7 -11 此处,x(1:2:7)等价于x(1,3,5,7).,列向量的创建,前面提到的都是行向量,列向量的操作和运算和行向量类 似。要定义一个列向量,只须在键入的元素直接输入分号或 回车换行即可。 例3.6 x=3;4;5 %由分号分隔 x = 3 4 5 y=3 4 5 %由回车换行分隔,列向量和行向量之间可以通过转置符 互相转换。不过 需要注意的是,对于复数
13、向量,转置符的作用是复共轭转 置。符号 . 是对于复数向量的转置运算 。,3.3 数组运算,Matlab数组运算分为标量与数组运算和数组与数组之 间的运算。与矩阵不同的是,这两种运算都是在元素与元素 之间进行的。 3.3.1 标量与数组之间的运算 标量与数组进行四则运算就是这个标量对数组中的每个元 素进行同样的运算。 例3.8 a=1:5; b=a+3,c=2*a-5 b= 4 5 6 7 8 c= -3 -1 1 3 5,3.3.2 数组与数组之间的运算,当两个数组具有相同维数时,数组与数组之间可以进行加、 减、乘、除运算。,3.4 数组操作,3.4.1 Matlab对数据的物理存放形式 M
14、atlab中,数据的物理形式是按列存放。对于一个二维 数组,在内存中的单元存放顺序是:第一列元素,第二列元 素,最后一列元素。对于多维数组,则是把第二维以后 的维数作为数据平面(plane),存放顺序是:第一个plane中 的矩阵,第二个plane的矩阵,直到最后一个。,3.4.2 数组维内抽取、扩展、删除,3.4.3 数组的几个常用函数,对数组可以使用size函数来测量其大小,length函数返回 维的长度的最大值,ndims函数返回数组的维数。 例3.14 var=rand(3,4,5); %生成3*4*5大小的随机数 size(var) ans = 3 4 5 length(var) %
15、作用同max(size(var) ans = 5 ndims(var) %作用同length(size(var) ans = 3,3.5 字符串和数组,在Matlab中的字符串一般是ASCII值的数组。它作为 字符串表达式进行显示。,3.6 Matlab矩阵运算,3.7 矩阵常用的命令及特征参数计算,diag(A):设A为m*n矩阵,产生一具有min(m,n)个元素的列向量 diag(A,k):提取矩阵第k条对角线的元素 diag(V) :设V为具有m个元素的向量,产生一m*m对角矩阵, 主对角线元素即为向量V的元素 diag(V,k):产生一个n*n(n=m+k)对角阵,其中第m条对角线的
16、元素即为向量V的元素 triu(A)、tril(A):求矩阵A的上三角阵、下三角阵 rot90(A,k) :矩阵A旋转90o的k倍,当k为1时可省略 fliplr(A)、flipud(A):矩阵A左右翻转、上下翻转 inv(A):方阵A的逆矩阵 pinv(A):求非方阵,或者非满秩的方阵A的伪逆矩阵 rank(A):矩阵A的秩 trace(A):矩阵的迹.等于矩阵的对角线元素之和,亦矩阵的特征值之和 E=eig(A):矩阵A的全部特征值,构成向量E V,D=eig(A):矩阵A的特征值构成对角阵D,并求A的特征向量构成V的列 向量 det(A):矩阵A的行列式,4.Matlab语言程序设计,4
17、.1 运算符 Matlab的算术运算符可按优先级由低到高分为5级,每一级 内优先级相同,运算时从左向右结合。各级所包含的运算符如 下: (1)转置符(.)、幂符(.)、复共轭转置()、矩阵幂符()。 (2)标量加(+)、标量减(-)。 (3)向量乘法(.*)、向量右除(./)、向量左除(.)、矩阵乘法(*)、 矩阵右除(/)、矩阵左除()。 (4)加法(+)、减法(-)。 (5)冒号运算符。,4.2 关系运算符、逻辑运算符,关系运算符 大于 = 大于或等于 = 等于 = 不等于,逻辑运算符 y=2*pi; z=sin(x:pi/4:y); plot(z),4.5.2 命令文件(续),(3)保存
18、文件,并执行。通过编辑器【Debug】 【 Run 】 ,或者在命令窗口输入firstest执行,在命令窗口可以看到执 行结果。 注:firstest.m的第一行以%开头的行是注解,可以使程序 易于理解与管理。一般地,第一注解行通常用来简短说明此 M文件的功能,使用help firsttest命令可查看该注释; 命令窗口输入whos查看工作空间的变量,可以发现执 行时所建立的变量全部保留在工作空间中。 一行代码过长时使用符号“”续行符连接,4.5.3 函数文件,函数文件的一般格式为: function 输出表=函数名(输入表) 注释行 函数体 例4.2 计算1+2+n的函数: function
19、 output=mysum(n) %mysum函数计算直到n的和 output=0; %初始化 for i=1:n output=output+i; end,4.5.3 函数文件(续),函数文件的第一行必须以关键字function开始,表明该文 件是函数文件。输入表以逗号相分割形参。输出表是函数的 返回值。如果返回值只有一个,方括号可以省略;当返回值 不止一个时,输出表中的各个变量要以逗号隔开。 函数文件的文件名必须与函数名相同。 函数体任意位置都可以包含注释语句。在函数体中的空行 将被忽略。函数体是实现函数功能的部分。函数体包含函数 调用、程序流程控制、输入、输出、赋值、计算等语句。 对于定
20、义好了的函数,在命令窗口或其他文件中均可调用。 调用函数时,参数可以是常量、有确定值的变量或表达式。,4.5.3 函数文件递归函数,例4.3 function output=fact(n) %fact函数通过递归函数求解n! if n=1 %判断语句,递归结束条件 output=1; return; end output=n*fact(n-1); 在写一个递归函数时,一定要包含结束条件,否则函数将 一直调用自身,直到内存被耗尽为止。本例中n=1即为结 束条件。,4.6 变量和常量变量,在Matlab中,变量分为局部变量和全局变量。变量名由一 个字母开头,后面可以跟字母、数字、下划线等。在Mat
21、lab 中,变量区分大小写。在M文件中,变量在使用前无需定义 维数和每维的大小,但把一个变量赋给另一个变量时,要求 赋值号右边的变量有值。 在M文件中定义的变量是局部变量,其作用域仅在本函数, 仅能被本函数调用。全局变量定义后,能被其他函数调用, 在命令窗口也可以调用。因此,可以在命令窗口或任意一个 函数中改变全局变量的值。全局变量用global定义。如定义 全局变量a,b:global a b。,4.6 变量和常量常量,Matlab为特定的常数预留了一些名称,这些常量也可以重 新赋值。常量在工作空间不能直接看到,使用者可直接调用。,4.7 程序流程控制语句,4.7.1 赋值语句结构 1) 直
22、接赋值语句 基本格式为: 变量名=赋值表达式 上述语句把赋值表达式的值赋给变量。如果表达式后没有 分号,则在Matlab命令窗口显示运行结果,否则不显示。 例4.5 x=1; y=x y = 1,4.7.1 2)函数调用赋值,函数调用赋值语句的基本格式为: 返回变量列表=函数名(输入变量列表) 返回变量列表和输入变量列表一般由多个变量 组成,各变量之间用逗号隔开。 例4.6 x=rand(3,4); rn,cn=size(x) rn = 3 cn = 4,4.7.2 循环语句结构,Matlab里的循环结构可用forend语句和whileend语句来实现。 1)forend语句 for语句使用很
23、灵活,通常用于循环次数确定的情况。其调用格式为: for 变量名=表达式 循环体语句组 end 其中,表达式一般是以“s1:s2:s3”的形式给出。s1表示循环变量的初始值, s2表示步长(若步长为1 ,s2可省略)。对于正的步长,当变量的值大于s3 时结束循环;对于负的步长,当变量的值小于s3时结束循环。 注意for循环不能用重新赋值循环变量的方法来终止循环。,4.7.2 循环语句结构whileend语句,while语句一般用于事先不能确定循环次数的情况。while 语句的基本形式为: while 条件表达式 循环体语句组 end 例4.8 接受用户键盘输入,直到输入字符串时程序结束。 x=
24、input(输入一个字符串:); %接受用户键盘输入 while isstr(x) %存入变量x x=input(输入一个字符串:); end,4.7.3 条件语句结构,Matlab提供的条件语句有: (1)ifend语句。其基本格式为: if 条件表达式 条件语句组 end 例4.9 if rand0.5 disp(产生的随机数大于0.5); end,(2)if else end语句。其基本格式为: if 条件表达式 条件块语句组1 else 条件块语句组2 end 例4.10 function out=piecefun(x) %定义分段函数 if x=1 end end,4.7.3 开关语
25、句结构,其基本格式为: switch 开关表达式 %标量或字符串 case 表达式1 语句组1 case 表达式1,表达式2,表达式k 语句组2,表达式2,表达式k otherwise 语句组n end,4.8 Matlab语言编程技巧,(1)测试程序执行时间 建立程序执行时间有两种方法:一种是使用tic和toc命令,tic用于启动 秒表,toc用于停止秒表;另一种是使用能够获取CPU时间的cputime命 令。 例4.12 建立一个1000*1000的魔方矩阵,使用tic和toc命令。 tic %开始计时 A=magic(1000); %运行程序 toc %结束计时,并显示所耗时间 Elap
26、sed time is 0.812000 seconds. t=cputime; %把cpu时间赋给变量t A=magic(1000); cputime-t %显示前后时间之差,即执行程序所耗时间 ans= 0.7031,4.8(2)加快Matlab程序执行的方法,1)避免使用循环 Matlab的不足是当对矩阵的单个元素进行循环操作时运算速度很慢, 因此应尽量避免使用循环。编程时,尽量对矩阵或向量编程,把循环向 量化,这样不仅能缩短程序长度,而且能提高程序执行效率。 在必须使用多重循环的情况下,若两个循环执行的次数不同,则应在 循环的内层执行次数多的,外层执行循环次数少的。 2)对大型矩阵预先
27、定义维数 在程序执行的过程中,有时要动态改变矩阵的维数,非常浪费时间。 为此,应在定义大矩阵时,首先用Matlab的内在函数(如zeros()或ones() 对矩阵定义好维数,然后再进行赋值处理,这样会提高程序的运行效率。 3)优先使用内在函数。,例4.13 tic sum=0; for i=1:100000 sum=sum+1/i2; end toc Elapsed time is 0.454000 seconds. 向量化编程: tic i=1:100000; s=sum(ones(size(i)./i.2); toc Elapsed time is 0.016000 seconds.,5
28、. 符号计算和符号微积分,与Wolfram公司(数学软件Mathematica的开发公司)相比, MathWorks公司一直以矩阵计算和强大的数据处理能力见 长,而符号计算并不是其强项。直到1993年,MathWorks公 司从加拿大的Waterloo Maple公司购买了Maple软件的内核 技术,开发了用以进行符号计算的基本符号运算工具箱和扩 展符号运算工具箱,从而解决了Matlab在符号计算方面的缺 陷。基本符号运算工具箱含有100多个Matlab函数,通过这 些函数可以采用Matlab的语法来调用Maple内核.Matlab 7.0 的符号运算工具箱,包括符号函数、符号方程的定义、运算
29、、 复合、化简,符号矩阵的计算,符号微分、积分,符号代数 方程和符号微分方程的求解,符号积分变换和符号特殊函数.,5.1 符号表达式的定义,Matlab 7.0系统有默认的符号自变量,系统默认的自变量 主要有x、x1、y、y1、z、v、u、t、theta、alpha。当这些 变量中的某一个与其它变量组成符号数学表达式时,这些变 量即为默认的自变量;当这些变量中的某几个组成符号数学 表达式时,默认自变量的顺序是: xx1yy1zvutthetaalpha 例如,数学表达式sin(3*t*theta),默认的自变量为t。 例5.1:定义x、y、z、s、t五个符号变量,使用syms命令操 作为: s
30、yms x y z s t %定义单个符号变量也可x=sym(x),符号表达式定义(续),例5.2 用单引号定义符号表达式。 fun=a0*x3+a1*x2+a2*x+a3=0 %定义符号代数方程 fun = a0*x3+a1*x2+a2*x+a3=0 fun=3*D2y-2*Dy+y=0 %定义符号微分方程 fun = 3*D2y-2*Dy+y=0 fun=atan(x) %定义符号函数 fun= atan(x),5.2 符号矩阵计算,在Matlab 7.0中,符号矩阵的运算与数值矩阵相同。 例5.3 定义符号矩阵,进行各种符号运算。 syms a b c d e f g h A=a b;
31、c d; %定义符号矩阵A B=e f; g h; %定义符号矩阵B A+B ans= a+e, b+f c+g, d+h A*B ans= a*e+b*g, a*f+b*h c*e+d*g, c*f+d*h,5.3 符号表达式运算,符号表达式的基本运算有合并同类项、表达式展开、因式 分解、提取符号表达式的分子和分母、符号表达式的化简、 确定符号矩阵的维数。有关函数的调用格式和功能见下表。 collect(s):按默认变量x的次数对符号多项式s合并同类项 collect(s,v):按指定变量v的次数对符号多项式s合并同类项 expand(s):将符号多项式s展开 factor(x):将符号表达
32、式x因式分解 N,D=numden(A):求符号表达式A的分子N和分母D simplify(s):求表达式s的化简形式 m,n=size(A):求符号矩阵A的行数m、列数n,5.4 符号函数的极限,limit(F,x,a) :计算当xa时符号函数表达式F的极限值 例5.4: syms x limit(tan(x)-x)/x3) %求自变量x趋近于0时的极限值 ans= 1/3 limit(x2-1)/(x-1),x,1) %求自变量x趋近于1时的极限值 ans= 2,5.5 符号函数的导数,diff(s) %计算符号表达式s对系统默认自变量的一阶导数 diff(s,n) %计算符号表达式s对系
33、统默认自变量的n阶导数 diff(s,v,n)%计算符号表达式s对指定变量v的n阶导数 例5.5: syms x y=log(log(x); diff(y) %求函数y对自变量x的一阶导数 ans = 1/x/log(x) pretty(ans) %求符号表达式的常规形式 1 - x log(x),5.6 符号函数的积分,int(s):对符号表达式s中的默认自变量求s的不定积分 int(s,v):对符号表达式s中的指定变量v求s的不定积分 int(s,v,a,b):对符号表达式s中的指定变量v在区间a,b上求s的 定积分 例5.6: syms x int(1/x4/sqrt(1+x2) %对默
34、认自变量x求不定积分 ans= -1/3/x3*(1+x2)(1/2)+2/3/x*(1+x2)(1/2) int(1/(1+4*x2),-inf,inf) %在区间-,+ 上求定积分 ans= 1/2*pi,5.7 代数方程组的符号解,Matlab 7.0中求代数方程的符号解是通过调用solve函数实 现的。调用格式一般为: solve(代数方程,未知变量)或x=solve(代数方程,未知变 量) 例5.7:求方程组 的解。 syms x y x,y=solve(x-2*y-4,x2-2*x*y+y) x= 4/9 y= -16/9,5.8 常微分方程组求解,在Matlab中,用dsolve
35、函数求解微分方程或微分方程组, dsolve函数的输入共有三部分,微分方程、初始条件和自变 量。调用格式为: dsolve(微分方程,初始条件,自变量) 微分或导数的输入用Dy,D2y,D3y,来表示一阶导 数,二阶导数,三阶导数。如果自变量是系统默认的,则 自变量输入部分可省略。dsolve函数的输出部分是该方程(组) 的解列表,如果dsolve函数找不到解析解,则系统显示错误 信息。,5.9 常微分方程组求解例题,例5.8:求解微分方程组 在无初始条件和 有初始条件 时的解。 x,y=dsolve(3*x+D2x+Dy=sin(3*t),4*Dx+D2y+3*y=cos(3*t),t) x
36、= -1/24*sin(3*t)+C1*exp(t)*cos(2(1/2)*t)+C2*exp(t)*sin(2(1/2)*t)+C3*exp(-t)*sin(2(1/2)*t)+C4*exp(-t)*cos(2(1/2)*t) y= -1/4*cos(3*t)-2*C1*exp(t)*cos(2(1/2)*t)-2*C2*exp(t)*sin(2(1/2)*t)+2*C3*exp(-t)*sin(2(1/2)*t)+2*C4*exp(-t)*cos(2(1/2)*t) x,y=dsolve(3*x+D2x+Dy=sin(3*t),4*Dx+D2y+3*y=cos(3*t),. Dx(0)=1
37、/2,x(0)=0,Dy(0)=2/3,y(0)=1,t),6. Matlab科学绘图,主要内容 图形窗口 二维平面绘图 空间三维绘图 特殊三维绘图函数 Matlab在数据可视化方面也有很好的表现,具有强大的 图形绘制能力。Matlab可以绘制二维、三维乃至四维图形, 而且能对图形进行线型、里面、色彩、渲染、光线、视角等 控制。用户只须指定绘图方式,并提供充足的绘图数据,即 可得出所需的图形。,6.1 图形窗口,在Matlab中,图像窗口和命令窗口是独立的窗口。当图 形窗口处于关闭状态时,图形命令将新建一个窗口;如果已 经打开了一个或多个图形窗口,一般默认最后一个打开的窗 口作为当前图形命令的
38、输出窗口。 例6.1 t=0:pi/50:2*pi; x=sin(t); plot(t,x),6.2 二维平面绘图,plot是基本的二维绘图命令,Matlab的其他二维函数中的绝大多数是 以plot为基础构造的。函数plot最直接的调用格式为: plot(x,y) 曲线实际上是由一系列的的点构成。首先定义了横坐标x向量,然后 定义纵坐标y向量,通过plot函数作出图形。若要画出多条曲线,只须将 坐标对依次放入plot函数即可。 例6.2 在同一个窗口绘制y=sinx,y=cosx在0,2*pi的图像。 x=linspace(0,2*pi,101); plot(x,sin(x),x,cos(x)
39、 %坐标对依次放入plot函数中 也可以在Matlab窗口输入下列命令: x=linspace(0,2*pi,101); plot(x,sin(x);cos(x) 程序运行结果如图。,plot函数绘图命令的选项,不同种类的选项间可以搭配使 用,如选项”ro”表示绘制红色的 圆划线。带选项的曲线绘制命 令的基本格式为: plot(x1,y1,选项1,x2,y2,选项2,) 例如: plot(x1,y1,b*,x2,y2,x3,y3,g+),例6.3 x=0:pi/100:2*pi; plot(x,sin(x),ko,x,cos(x),*),二维图形的标注方法,1)坐标轴的调整 Matlab可以根
40、据所绘制曲线的范围自动选择适当的坐标系, 使得曲线能够尽可能清晰地显示出来。所以,一般情况下不 需要考虑坐标范围的选择。但有特殊的要求时,可以手动地 改变坐标系的范围。手动调整只须借助axis函数,其基本格 式为: axis(xmin,xmax,ymin,ymax) 例6.4 调整坐标轴显示的范围。 x=0:pi/100:2*pi; axis(0,6.3,-1.1,1.1); plot(x,sin(x),ko,x,cos(x),*),2) 坐标标注、图形标题和注解,Matlab可以用函数xlabel和ylabel分别为x轴和y轴加上注解和 说明,其中ylabel函数会自动旋转90o显示。tit
41、le和legend函数分别 为图形添加标题和注解。grid on和grid off命令分别表示开启和关 闭网格线的显示。 图形上点的标注和说明用text命令实现。text函数的基本格式为: text(x,y,字符串,属性名,值) 其中,(x,y)是标注的位置,字符串是要说明的内容,leftarrow和pi 分别表示左箭头和常量 。 例6.5 x=0:pi/100:2*pi; axis(0,6.3,-1.1,1.1); plot(x,sin(x),k,x,cos(x); xlabel(x); ylabel(y); %x轴、y轴注解 title(一个周期内的正弦、余弦函数图像); %图形标题 le
42、gend(y=sin(x),y=cosx); %图形注解,在右上角显示 grid on %显示网格线 text(pi/5,sin(pi/5),(pi/5,sin(pi/5),fontsize,16); text(pi/5,cos(pi/5),(pi/5,cos(pi/5),fontname,楷体);,图形的标注和说明,可通过图形窗口的Insert菜单下的各子菜单(如X label、Y label、 Z label、Title等)交互设置。,图形窗口的分割和多个对象的显示,在前面的例子,使用plot命令可以在同一窗口中显示多条 曲线。除此之外,还有其他一些方法实现多个图形的显示。 (1)使用ho
43、ld函数 hold on %增加图形。后续图形增加到现有图形中 hold off %替换图形。默认值。替换现有图形 hold %在增加图形和替换图形之间切换 (2)分割图形窗口 subplot(m,n,p) %把图形划分成m*n个矩阵块,当前选择第K %个矩阵块。子块排序以行优先 例6.6,例6.6 在四个子窗口,做出0,2*pi区间的正弦、余弦、余切 函数曲线。其中第3、4子窗口作余切函数曲线。 x=0:pi/100:2*pi; subplot(2,2,1),plot(x,sin(x),title(sinx), subplot(2,2,2),plot(x,cos(x),k),title(co
44、sx), subplot(2,2,3 4),axis(plot(x,tan(x),g),title(tanx),二维绘图函数,例6.7 绘制函数sin(1/x)在x=0附近的变化情况。 fplot(sin(1/x),0.02 0.2); 例6.8 作心形线 。 t=0:pi/360:2*pi; polar(t,1+cos(t),r.) 或 ezpolar(1+cos(t),0,2*pi);,%fplot函数会对函数剧烈变化处进 %行较密集的取样,从而进行较精 %确的绘图。,饼图 pie(x) %把x中的数据按照所占总量sum(x)的比例画成饼图 pie(x,explode) %explode为
45、与x同大小的向量,若分量非0 , % 则对应切片从饼图的中心分离。 例6.9 score=5 15 10 7 2;%某班成绩分布 explode=0 1 1 1 0;%各分数段切片是否分离显示 pie(score,explode,90-100,80-89,70-79,60-69,60) %,与x同大小的细胞字符串,依次作为各切片的标签,6.3 绘制三维曲线,plot3命令绘制三维曲线。函数调用格式为: plot3(x,y,z,选项) 其中,x,y,z分别表示曲线的3个坐标向量,这里要求它们 的维数相同,选项与函数plot一致。 例6.10 画出螺旋线。 t=-5:5; x=2*cos(3*t)
46、; y=2*sin(3*t); z=4*t; plot3(x,y,z),6.4 绘制曲面网线图,用mesh函数生成曲面网线图,函数的调用格式为: mesh(X,Y,Z,C) 此函数由3个矩阵X,Y,Z绘制空间网线图,即以矩阵元素 为空间坐标在空间描点作图,点与点之间用线段连接。C为颜色矩阵, 表示在不同高度下的颜色范围。如果省略C选项,则自动假定C=Z, 亦即颜色的设定是正比于高度的,这样得到的三维图形层次比较清 楚。 在使用mesh函数时,一般都要调用meshgrid函数生成网线节点 矩阵,其基本调用格式为: X,Y=meshgrid(x,y) 其中,x和y都是向量,X和Y都是矩阵,X的每行
47、都是由向量x构成, Y的每列则由向量y构成。xy平面就按照X和Y矩阵分割成小矩形单元。,例 用meshgrid产生网格。 x,y=meshgrid(0:3,0:3) x= 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 y = 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 例6.11 作出椭圆抛物面 。 x,y=meshgrid(-2:0.1:2,-3:0.1:3);%生成xy平面的网格 z=x.2/4+y.2/9; %计算网格坐标的高度 mesh(x,y,z) %生成曲面网格图 colorbar %高度的彩色条,三维表面图,当要绘制表面图时,可以使用surf
48、函数,其调用格式为: surf(X,Y,Z,C) 各变量的含义与mesh函数类似。 例6.12 绘制马鞍面。 x,y=meshgrid(-2:0.1:2,-3:0.1:3);%生成xy平面的网格 z=x.2/4-y.2/9; %计算网格坐标的高度 surf(x,y,z) %生成曲面网格图 shading interp %网格块内采用颜色插值处理,使表面显得更光滑,7 Matlab在数值分析、优化中的应用,在科学研究和工程应用中,往往要进行大量的数学计算。 Matlab的数值分析功能十分强大,本节主要讲述Matlab在 函数、插值和曲线拟合分析、微积分和线性方程系统方面 的应用。 7.1 Mat
49、lab中的多项式 1)定义多项式 。 p=1 0 -12 0 12 7; %系数按降序排列,缺项补0 r=roots(p) r = -3.3330 3.2673 1.2985 -0.6164 + 0.3392i -0.6164 - 0.3392i p=poly(r) %根据多项式的根,构造多项式,2) 多项式的加、减、乘、除运算,多项式的加减乘除与向量的加减乘除相似,Matlab没提供专 门的运算。对于两个不同阶的多项式相加减,只需用0填补低阶 多项式相应的高阶,变成同阶的再做运算。 例7.1 多项式 与 的和、差、积、商。 p1=1 0 0 0 -1;p2=1 0 2 5; %定义两个多项式
50、 p2=0 p2; %扩展低次多项式,成为与p同阶多项式 s=p1+p2 %多项式加法 s=1 1 0 2 4 p2(1)=; %多项式乘法对同阶无要求 m=conv(p1,p2) %多项式乘法 m=0 1 0 2 5 -1 0 -2 -5 q,r=deconv(p1,p2) %多项式p1除以p2,q表示商,r表示余数 q=1 0;r=0 0 -2 -5 -1,3) 多项式的导数,Matlab提供函数polyder计算多项式及其积、商的导数 此函数有如下几种表达形式: k=polyder(p); %多项式p的导数 k=polyder(a,b); %多项式a与b的积的导数 q,d=polyder(a,b); %返回多项式a与b的商的导数,q %表示导数的分子部分,d表示导 %数的分母部分 4)多项式的求值 例7.2 求多项式 在点x=1,3,5处的值。 p=1 3 1; %定义多项式 polyval(p,1 3 5) ans= 5 19 41,6.2 求函数的零点,Matlab提供函数fzero求函数的零点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度智能家居安防监控系统安装合同
- 二零二五年度服装样品采购与时尚发布合同
- 二零二五年度高级管理人员保密竞业限制合同
- 二零二五年度生态环境保护与安全生产合作责任书
- 二零二五版电商平台新品试用合作协议书
- 二零二五年度智能电网设备安装工程合同范本
- 2025版电力设施建设不可撤销履约担保合同
- 二零二五年LED显示屏采购及安装服务合同
- 二零二五年度力拓公司铁矿石国际贸易价格波动风险规避合同
- 二零二五年高性能涂料采购合同标准
- 设备集中采购管理制度
- 高考数学专题-基本不等式求最值的常用方法(解析版)
- 私立幼儿园管理制度
- 2025上海纺织工业职工大学教师招聘考试试题
- 电力现货市场基础知识
- 员工转岗培训管理制度
- 关于卫生院“十五五”发展规划(完整本)
- 放电缆劳务协议书
- 新《职业病危害工程防护》考试复习题库(浓缩500题)
- 孙培荣针灸验桉汇编
- SL631水利水电工程单元工程施工质量验收标准第2部分:混凝土工程
评论
0/150
提交评论