数学实验第一章2_第1页
数学实验第一章2_第2页
数学实验第一章2_第3页
数学实验第一章2_第4页
数学实验第一章2_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.1导 言 MATLAB是MATrix LABoratory的缩写,是由美国MathWorks公司开发的工程计算软件,迄今MATLAB已推出了10.0版. 当今数学类科技应用软件可分为两类, 一类是数值计算型,如 MATLAB,Xmath,Causs等这类软件擅长数值计算,对处理大批数据效率高,适于用数值的方法处理问题; 另一类是数学分析型软件,如Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精度解,适于用解析的方法处理问题。其缺点是处理大量数据时效率较低.第一章第一章 认识认识 MATLAB MATLAB为适合多学科的功能强大的大型软件,在欧美等高校,MA

2、TLAB成为线性代数、数理统计、数值分析、优化技术、自动控制、数字信号处理、图像处理、时间序列分析、动态系统仿真等高级课程的基本教学工具,成为大学生、研究生和博士生必须掌握的基本技能。同时,MATLAB也被研究单位和工业部门广泛应用,使科学研究和解决各种具体问题的效率大大提高。MATLAB集成环境主要包括五个部分: MATLAB语言(编程方式)MATLAB工作环境(交互运行方式)句柄图形(图形的句柄就是指向了这个图形的一个变量,MATLAB允许调用者通过它设定该图形的各种属性。)MATLAB数学函数库MATLAB API(application program interface). 运算符和

3、库函数极其丰富,语言简洁,编程效率高。 MATLAB 除了提供和C语言一样的运算符外,还提供广泛的矩阵和向量运算符。利用其运算符和库函数可使其程序相当简短,两三行语句就可实现几十行甚至几百行C或FORTRAN编写的程序功能。 MATLAB语言具有以下主要特点:既具有结构化的控制语句(如 for 循环、break 语句、if 语句和switch 语句),又有面向对象的编程特性。易于扩充。除内部函数外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可修改源文件和加入自己的文件,它们可以与库函数一样被调用。图形功能强大。它既包括对二维和三维数据可视化、图像处理、动画制作等高层次的绘

4、图命令,也包括可以完全修改图形局部及编制完整图形界面的、低层次的绘图命令。在MATLAB中,每一个对象都有一个数字标识。这个数字标识就叫做该对象的句柄句柄:句柄图形:可以由用户,通过句柄(是一个变量)来定制的图形生成环境功能强大的工具箱。工具箱可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处处理功能以及与硬件实时交互的功能。而学科性工具箱是专业性比较强的,如优化工具箱、统计工具箱、控制工具箱、小波工具箱、图像处理工具箱、通信工具箱等。1.3MATLAB环境环境1.3下面将分别介绍MATLAB的命令窗口、工作区、程序编辑器和帮助系统命令窗口

5、、工作区、程序编辑器和帮助系统。 1.3.1 命令窗口 命令窗口是用户与MATLAB进行交互会话的主要场所。 标题栏 菜单栏 工具栏1.2.1安装1.2.2启动 命令编辑区:命令窗口的空白区域,用于输入和显示计算结果。可以在该区域键入各种MATLAB命令进行各种操作,键入数学表达式进行计算,例如,键入变量赋值命令:x=4.5并回车,将在命令行的下面显示: x= 4.5 再输入求 的三角正弦函数值的表达式y=sin(pi * x)并回车,将显示: y= 1x 若在表达式后面跟分号“;”,则可以不显示结果。这对有大量中间数据 的程序特别有用。因为写屏将花费大量系统资源来进行十进制和二进制之间的转换

6、,用分号关掉不必要的输出,会使程序运行速度成倍甚至成百倍的提高。注意注意例如键入: x=6; y=4; z=9; 2* x+y-3 *z输出: ans= -11 1)当不指定输出变量时,MATLAB将计算值赋给缺省变量ans(an-swer的缩写)。 2)在MATLAB里,有很多控制键和方向键可用于命令行的编辑。例如,当漏敲命令ho=(1+sqrt(5)/2的字符“r”时,将会给出错误信息: Undefined function or variable sqt.这时不用重新键入整行命令,而只需按“ ”键,就会再显示刚才键入的命令行,在相应的位置键入“r”,接着按回车即可正常运行。反复使用“ ”

7、键,可以回调以前键入的所有命令行。表1.1给出了MATLAB的控制键及其作用.表1.1命令窗口的控制键功能 键 相应快捷键 功能 ctrl-p 重调前一行 ctrl-n 重调前一行 ctrl-b 向左移一个字符 ctrl-f 向右移一个字符 ctrl ctrl-r 向右移一个字 ctrl ctrl-l 向左移一个字 Home键 ctrl-a 移动到行首 End键 ctrl-e 移动到行尾 Esc键 ctr-u 清除一行赋值运算符=、前后的空格不影响计算结果。 变量命名规则: 1)以字母开头,后面可跟字母,数字和下短线; 2)大小写字母有区别; 3)不超过31个字符。例如,xie23 -1,a,

8、At ,Arui32r这四个都是变量。 特殊变量名:特殊变量名: ans 系统定义的一个变量,它用于保留计算的结果。 pi 表示圆周率3.1415926eps eps是相对精度 , eps(A)相当于求距离A最近的,可以被 matlab分辨(即判定不等于A)出来的数到A的距离。 单独调用eps相当于eps(1)1MATLAB能识别的紧挨着1的双精度实数1+eps如1+eps1为真,1+eps/2=1为真。这与计算机的存储特性相关 matlab中的实数只有一种数据格式,就是双精度(64位二进制或8个字节),它的有效值是16位十进制。正实数的范围 realmaxans = 1.7977e+308

9、realminans = 2.2251e-308 epsans =2.2204e-016 eps(1)ans = 2.2204e-016realmin 最小可用正实数, realmin= 2.2251X10-308 。如 realmin2,MATLAB 只能识别 0 。realmax 最大可用正实数, realmax =1.7977X10+308 。 如 realmax+1=realmax ans =1 (返回逻辑值真 ,即上式成立)1.3.2 MATLAB工作区 工作区(workspace):接受MATLAB命令的内存区域,存储着命令窗口输入的命令和创建的所有变量值。 每打开一次MATLAB

10、,都会自动建立一个工作区,刚打开的MATLAB工作区中只有MATLAB提供的几个常量,如 pi(3.1415926 )、虚数单位i等。运行MATLAB的程序或命令时,产生的所有变量被加入到工作区。除非用特殊的命令删除某变量,否则该变量在关闭MATLAB之前一直保存在工作区。工作区在MATLAB运行期间一直存在,关闭MATLAB后,工作区自动消除。注:Workspace在MATLAB界面上表现为一个资源列表,含变量名称、取值、变量类别inf 无穷大,如1/0NaN 不定量,如0/0 i或j 表示虚数单位,即 i=j= - 1的开方 可以随时查看工作区中的变量名及变量的值。Who或whos 显示当

11、前工作区中的所有变量Clear 清除工作区中的所有变量Clear (变量名) 清除指定的工作区变量工作区中的所有变量可以保存到一个文件中,便于以后使用。Save (文件名) 将当前工作区的变量储存在一个MAT文件中Load (文件名) 调出一个MAT文件quit 或单击右上角的“X”按钮,退出工作区1.3.3 MATLAB的程序编辑器的程序编辑器 MATLAB提供了一个内置的具有编辑和调试功能的程序编辑器,编辑器窗口也有菜单栏和工具栏,使编辑和调试程序非常方便。当你要解决一个具体的问题,要求执行的命令数比较多;或要改变变量的值,反复执行时,编程序执行的效率就较高。程序文件叫做M文件。M文件包含

12、两类:命令文件(不需要参数)和函数文件(需要自变量)。命令M文件的建立过程1)进入程序编辑器( MATLAB Editor/Debug):从“File”菜单中选择“New”及 “M file”项或单击“New M file”按钮;2)输入程序:在“MATLAB Editor/Debug”窗口输入MATLAB程序;3)保存程序:单击,出现一个对话框,在文件名一框中键入一个文件名,单击“保存”按钮。一个M文件便保存在磁盘上了,便于修改、调用、运行和今后访问。 命令文件没有输入参数,也不返回输出参数,只是一些命令行的组合。命令M文件中的命令可以访问MATLAB工作区中的所有变量,而且其中的所有变量也

13、成为工作区的一部分。命令文件运行结束,命令文件产生的变量保留在工作区,直至关闭MATLAB或用命令删除,下面是一个命令文件的例子。程序:% 文件名 example.m x=4;y=6;z=2;%三种商品的数量 items=x+y+z %总数量 cost=x*25+y*22+z*99 %商品单价和总价格 average_cost=cost/items %平均价格 当这个文件在程序编辑窗口输入并以名为example.m的M文件存磁盘后,只需简单地在MATLAB命令编辑窗口键入example即可运行,并显示结果2. 命令M文件及其运行 在M文件中对程序的注释是以符号“%”开始直到该行结束的部分,程序

14、执行时会自动忽略。 注意注意上例运行结果如下exampleitems= 12cost= 430average_cost= 35.8333 用户可以重复打开example.m文件,改变x,y,z的值,保存文件并让MAT-LAB重新执行文件中的命令,若把example.m文件放在自己的工作目录下,那么在运行example.m之前,应该先使该目录处于MATLAB的搜索路径上。可以选择“File”菜单下的“Set Path”项,打开路径浏览器把该目录永久地保存在MATLAB的搜索路径上。 3.函数M文件及其调用 在MATLAB编辑窗口还可建立函数M文件,我们可以根据需要建立自己的函数文件,它们能够像库

15、函数一样方便地调用,从而可扩展MATLAB的功能,如果对于一类特殊的问题,建立起许多函数M文件,就能形成工具箱。函数M文件的第一行有特殊的要求,其形式必须为 function 输出变量列表=函数名(输入变量列表) 函数体语句函数M文件的文件名必须与其函数名相同。注意例如,一个只有两行的函数M文件: function f=fun(x) f=100*(x-x2)2-(1-x)2;建立函数文件后,在MATLAB的命令窗口或别的M文件里,就可用下列命令调用:x=2; f=fun(x)结果为 f= 399函数函数M文件文件例2 还是一个只有两行的函数M文件: function f=fun(x) f=10

16、0*(x(2) - x(1)2)2-(1- x(1)2;建立函数文件后,在MATLAB的命令窗口或别的M文件里,就可用下列命令调用:x=2 3; f=fun(x)结果为 f= 99例3 还是一个只有两行的函数M文件: function f g=fun(x) f=100*(x(2)-x(1)2)2-(1-x(1)2; g=x(1)+x(2);(二维向量)建立函数文件后,在MATLAB的命令窗口或别的M文件里,就可用下列命令调用:x=2 3; f g=fun(x)结果为 f= 99 g=5 function F,G=fun2(x) F=2*x(1)2+2*x(2)2-2*x(1)*x(2)-4*x

17、(1)-6*x(2); G=x(1)+5*x(2)-5 2*x(1)2-x(2) ; -x(1) -x(2) ;还可用下列命令调用实参X1=4 5;F1,G1=fun2(x1形参)结果为F1= -4G1= 24 27 -4 -5调用,X=4 5;F,G=fun2(x)结果为F= -4G=24 27 -4 -51)输出变量如果多于1个,则应该用方括号括起来;输入变量应该用逗号隔开;当函数无输出参数时,输出参数项空缺或者用空的中括号表示。如: function printresults(x) 或 function = printresults(x)2)函数M文件不能访问工作区中的变量,工作区中的所

18、有变量均为局部变量,只有输入、输出变量才保留在工作区。又如:又如:4. 文件管理What 返回当前目录下 M,MAT,MEX文件的列表dir 列出当前目录下的所有文件cd 显示当前的工作目录type test 在命令窗口下显示test.m的内容delete test 删除M文件test.mwhich test 显示M文件test.m所在的目录这里text.m是一个具体的文件 MATLAB 有以下几种方法获得帮助:帮助命令、帮助窗口、MATLAB帮助台、在线帮助页或直接链接到Math Works公司 1.帮助命令 帮助命令是查询函数语法的最基本方法,查询信息直接显示在命令窗口help函数后,可寻

19、求关于某函数的帮助例如,键入: help sqrt 显示: sqrt square root.1.3.4MATLAB的帮助系统的帮助系统 帮助文本中的函数名帮助文本中的函数名SQRT是大写的,以突出函数名,但在使用函是大写的,以突出函数名,但在使用函 数时,应用小写数时,应用小写注意注意 MATLAB按照函数的不同用途分别将其存放于不同的子目录下。 help子目录标题可显示某一类的所有函数或命令。例如,键入: help graph2d 将显示: Two dimensional graphs. Elementary X-Y graphs. plot -Linear plot. loglog -L

20、og-logscale plot semilogx -Semi-log scale plot.semilogy -Semi-log scale plot.命令help将显示帮助的所有子目录标题。Lookfor 关键词 它是通过搜索所有MATLAB下的help子目录标题与MATLAB搜索路径中M文件的第一行,返回包含所指定关键词的那些项。最重要的是关键词不一定为命令。例如,键入: lookfor complex显示: CONJ Complex conjugate. IMAG Complex imaginary part.REAL Complex real part.demo 可浏览例子和演示,h

21、elp demos 将给出所有的演示题目。2.帮助窗口 帮助窗口给出的信息与帮助命令给出的信息内容一样,但在帮助窗口给出的信息按目录编排,比较系统,更容易浏览与之相关的其他函数。在MATLAB命令窗口中有三种方法进入帮助窗口: 1)双击菜单条上的问号按钮; 2)键入helpwin命令; 3)选取帮助菜单里的“Help Window”项。 1.4数组和函数数组和函数 MATLAB中最基本的数据对象就是数组或矩阵。标量可看作是11型的矩阵,向量可看作是1n或n1的矩阵。一维数组是向量,二维数组便是矩阵,还有三维甚至更高维的数组。标量运算是数学的基础。在多对数据执行同样运算的场合,采用数组或矩阵运算

22、将非常简洁和方便。1.4.1创建矩阵创建矩阵1.直接定义直接定义键入:A=1 2 3;4 5 6回车后,输出为 A= 1 2 3 4 5 6 这里A为一个2行3列的数组或矩阵。空格或逗号用于分隔某一行的元素,分号表示开始新的一行。输出:A= 1 2 3 4 5 02. 一维数组的简单构造一维数组的简单构造 前面通过键入每个元素来输入一个矩阵或数组,当数组中的元素有成百上千时,怎么办呢?对于一维数组有两种简单的输入式。例如, x=0:0.1:1 %从0到1,增量为0.1即步长 。 x=linspace(0,pi,11) %在0到pi之间插入了9个等份值。x 共含11个分量。 在MATLAB中这两

23、种创建数组的方式是最常见的。注意:定义A用方括弧,访问A的第二行第三列的元素,用圆括弧键入:A(2,3)=0 (数组编址) %将第2行,第3列的元素置为0。 上述数组创建形式所得到的数组元素是线性分隔的,当需要对数分隔时,MATLAB提供了函数logspace. 格式:x=logspace(first,last,n) 从first开始,到last结束,等份地插入n-2个值,以这n个值作为10的方幂构成行向量x。例如:x=logspace(0,2,5) 1.0000 3.1623 10.0000 31.6228 100.0000% 5个方幂(作为10的指数)为:0, 0.5 , 1, 1.5 ,

24、 2 已知一组数可以表达为10的方幂,且方幂数组为线性分隔的,则调用logspace函数即可给出这组数。 有时所需的数组不具有易于描述的线性或对数分隔关系,这时使用数组编址和表达式组合的方法可简化数组元素输入。组合的方式:键入: a=1:5(步长1省略);b=1:2:9(步长2);c=b a(组合)输出:c= 1 3 5 7 9 1 2 3 4 5例如 y=logspace(-2,2,10)y= 0.0100 0.0278 0.0774 0.2154 0.5995 1.6681 4.6416 12.9155 35.9381 100.0000% 其中方幂序列为 -2.0000 -1.5556 -

25、1.1111 -0.6667 -0.2222 0.2222 0.6667 1.1111 1.5556 2.0000 创建的数组c,由b中元素和a中元素构成。编址的方式:键入: d=a(1:2:5)1 0 1输出: d= 1 3 5 1 0 1 上述所创建的数组都是行向量,如何创建列向量呢?可使用转置算子()把行向量变成列向量。如键入:a=1:4; %表示从1到4,增量为1的行向量b=a %表示向量的转置% a的第1、3、5分量b= 1 2 3 4有两种转置的符号: 1)当数组是复数时,()产生的是复数共轭转置; 2). 只对数组转置,但不进行共轭。例如:a=1+i 2-i 3+i 4 - i

26、; 3.一维数组的操作一维数组的操作键入:x=0 .1*pi .2*pi .3*pi .4*pi .5*pi .6*pi .7*pi .8*pi .9*pi pi;(零点几,零可以去掉) y=sin(x)注意:MATLAB中可将 0.1写为.1 0.2写为.2 a. 1.0000 + 1.0000i 2.0000 - 1.0000i 3.0000 + 1.0000i 4.0000 - 1.0000i a(转置后共轭) 1.0000 - 1.0000i 2.0000 + 1.0000i 3.0000 - 1.0000i 4.0000 + 1.0000i输出: y= Columns 1 throu

27、gh 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 Columns 8 through 11 0.8090 0.5878 0.3090 0.0000 在MATLAB中,数组元素用下标访问,如y(2)是y的第2个元素。例如,键入: y(3) %表示y的第3个元素输出:ans= 0.5878 可以同时访问一个数据块,MATLAB用冒号来表示。键入: x(1:5)输出:ans= 0 0.3142 0.6283 0.9425 1.2566键入:y(3:-1:1)输出:ans= 0.5878 0.3090 0 3:-1:1表示从3开始减1计数,到1为止。又如

28、键入: x(2:2:7)输出:ans= 0.3142 0.9425 1.5708 2:2:7表示从2开始加2计数,到7为止。再如键入: y(8 2 9 1)输出: ans= 0.8090 0.3090 0.5878 0这里是按照数组8 2 9 1提供的次序来提取y数组中的元素。注意:用方括号 定义一个向量,用圆括号访问向量的分量键入:A=1 2 3;4 5 6;7 8 9 A(3 , : ) % 取A的第3行所有列输出:ans= 7 8 9键入: A(:,1) % 取A的第1列的所有行输出:ans= 1 4 7 从一个矩阵中取出若干行(列)构成新矩阵称为剪裁,冒号“:”是非常重要的剪裁工具。例

29、如% 这是一个3行3列的矩阵逗号前面是行标, 后面是列标 4.用矩阵的剪裁与拼接的方法构造新矩阵用矩阵的剪裁与拼接的方法构造新矩阵键入: B=A(2:3,:) %取A的第2, 3行,全部列(:表示到行以一为步长)输出: B= 4 5 6 7 8 9键入: C= A(1:2,1 3 )%A的第1到2行,第1,3列输出:c= 1 3 4 6 还有A(1:2:3,3:-1:1),想想将输出什么? 将几个矩阵接在一起称为拼接,左右拼接行数要相同,上下拼接列数要相同。例如,键入: D=C,zeros(2,1) (zeros(2,1)表示两行一列的零)输出: D= 1 3 0 4 6 0键入: E=D;e

30、ye(2),ones(2,1)(eye(2)表示单位矩阵)输出: E= 1 3 0 4 6 0 1 0 1 0 1 1% 分号为换行A(r , c)表示提取A中,由行下标向量r定义的行,和由列下标向量c定义的列所构成的A的子数组。 A(1 5 2,6 4 2)为A矩阵的第1、5、2行,第6、4、2列的3阶子阵注意注意a=1 2 3 4 5 6 7;b=a+1;c=a.*b-5;a=a;2*a;b-c;a+c;c-a;3*b;aA(r,:)提取A中,由索引向量r定义的行,和全部列所构成的A的子数组A(:,c)提取A中,由全部行,和由索引向量c定义的列所构成的A的子数组。用分号进行拼接的例子A=2

31、 4 6; 2 -10 -30; -1 11 31A(:)=2 2 -1 4 -10 11 6 -30 31 A(7)=A(:)逐列提取A中的所有元素作为一个列向量。A(i) 是把A看作列向量A(:),提取其中第i个元素。例例如,A矩阵如上 A(2 1, : )= 2 -10 -30 2 4 6 A(:, 1 3)= 2 6 2 -30 -1 31 A(2 1,1 3)= 2 -30 2 61.4.2 数组运算数组运算1.标量-数组运算键入: a=1:5 ; 3*a-5输出 : ans= -2 1 4 7 10键入: a.2输出: ans = 1 4 9 16 25 2.数组-数组运算 当两个

32、数组具有相同大小时,加、减、点乘(.*)、点除(./)、和点乘方运算(.)是按元素对元素方式进行的。例如,键入: g=1 2 3;5 6 7;8 9 10; h=1 1 1;2 2 2;3 3 3; g.*h(对应分量相乘,即同一位置数相乘)标量与数组的加、减、乘、除和点乘方(.)运算。其中点乘方(.)是指对数组的每个元素进行乘方运算。上述运算,均得到同样大小的数组,例如:数组和矩阵的点乘、点除、点乘方运算是MATLAB特有的。它适应了MATLAB以数组、矩阵为自变量的计算方式输出: ans = 1 2 3 10 12 14 24 27 30关于Matlab的向量”点乘方”的一个例题x=lin

33、space(0,pi,100); (到的个平分数)a=2;b=1;c=3;对于上述x向量,我们定义y向量,其第i分量为 y(i)=a*x(i)2+b*x(i)+c若要计算i=1,2,100的函数值.那么要算 y(1)=a*x(1)2+b*x(1)+c y(2)=a*x(2)2+b*x(2)+c y(100)=a*x(100)2+b*x(100)+c 或要编一个循环程序来计算。 Matlab的点乘运算可以针对x向量一次计算出y向量 y=a*x.2+b*x+c 设 a=a1 a2 a3, b=b1 b2 b3,c=标量 标量加法 a+c=a1+c a2+c a3+c; 标量乘法 a*c=a1*c

34、a2*c a3*c; 数组加法 a+b=a1+b1 a2+b2 a3+b3; 数组乘法 a.*b=a1*b1 a2*b2 a3*b3; 数组右除 a./b=a1/b1 a2/b2 a3/b3; 数组左除 a.b=b1/a1 b2/a2 b3/a3; 数组求幂 a.c= a1c a2c a3c; c.a= ca1 ca2 ca3; a.b=a1b1 a2b2 a3b3;提示提示练习:取a=1 1 2 ,b=3 2 1,c=2,观察计算结果。两个向量的相互运算(加减除外)必须在运算符号前加“” MATLAB提供了下列矩阵运算 + 加法;- 减法;转置运算; 乘法;乘幂;左除;/ 右除 除了除法之外

35、,其他运算都与线性代数中定义的一样。因此,这里只介绍一下除法运算。设A是可逆矩阵,解关于未知矩阵X的方程。1)在线性代数中方程AX=B的解为A-1B。MATLAB中这个解叫做A左除B,并在表达式中写为 AB。2)在线性代数中方程XA=B的解为BA-1, MATLAB中这个解叫做A右除B,并在表达式中写为 B/A。请设计练习题,练习并认识矩阵的左除、右除。 1)当A为方阵,p1为整数时,Ap表示A自乘p 次; 2)当A和P均为矩阵时,不能计算AP.注意1.4.3 矩阵的运算矩阵的运算 数学函数的自变量可以是一维或多维数组!此时,输出的是各元素的函数值构成的同规格数组。例如,输出:ans= 0.8

36、415 0.9093 0.1411 -0.7568 -0.9589 -0.2794MATLAB中的常用数学函数有三角函数:正弦sin(x),双曲正弦sinh(x),反正弦asin(x),反双曲正弦 asinh(x),余弦cos(x),正切tan(x),余切cot(x),正割sec(x), 余割csc(x),等。输入: a=1 2 3;4 5 6;sin(a)1.4.4 函数函数 1.常用的数学函数help sinhsinh(x)=(ex-e(-x)/2x = -5:0.01:5;plot(x,sinh(x)(自变量放前面,函数值放后面)例如指数函数:指数函数:exp(x),自然对数自然对数 l

37、og(x),常用对数,常用对数log10(x),以,以2为底的对数为底的对数 以以2为底的对数为底的对数 log2(x),平方根,平方根sqrt(x)等。等。整数函数:整数函数:朝零方向取整朝零方向取整fix(x),朝,朝-方向取整方向取整floor(x),朝,朝+方向取整方向取整ceil(x), 四舍五入到最接近的整数四舍五入到最接近的整数round(x),符号函数,符号函数sign(x)等。等。练习:练习:fix(3.8), fix(-3.8), floor(-3.8),floor(-3.8),ceil(-3.8),round(3.8)其他数学函数:绝对值或复数的幅值其他数学函数:绝对值或

38、复数的幅值abs(x)等等2. 数组的特征数组的特征 、 矩阵操作函数矩阵操作函数size(A) 返回一个二维向量,第一个元素为返回一个二维向量,第一个元素为A的行数,第二个元素为的行数,第二个元素为A的列数的列数size(A,1) 返回返回A矩阵的行数矩阵的行数size(A,2) 返回返回A矩阵的列数矩阵的列数Length(A) 返回返回max(size(A)flipud(A) 矩阵作上下翻转矩阵作上下翻转 flip/翻转翻转 up/上上 down/下下fliplr(A) 矩阵作左右翻转矩阵作左右翻转 left/左左 right/右右 diag(A) 提取提取A的对角元素,返回列向量的对角元

39、素,返回列向量diag(v) 以向量以向量v作对角元素创建对角矩阵作对角元素创建对角矩阵 v=1 3 2 4; diag(v)ans = 1 0 0 0 0 3 0 0 0 0 2 0 0 0 0 4A = 1.2000 3.4000 5.6000 7.8000 4.2000 6.4000 8.6000 10.8000 2.4000 6.8000 11.2000 15.6000 1.8000 -0.4000 -2.6000 -4.8000diag(A)ans = 1.2000 6.4000 11.2000 -4.8000 最大值最大值max,最小值,最小值min,求和,求和sum,求平均值,求

40、平均值mean,按升序排列,按升序排列sort等函等函数,只有当它们作用于向量时才有意义。它们也可作用于矩阵,此时产生一个行数,只有当它们作用于向量时才有意义。它们也可作用于矩阵,此时产生一个行向量,行向量的每个元素是函数作用于矩阵相应列向量的结果。向量,行向量的每个元素是函数作用于矩阵相应列向量的结果。 例如,键入:例如,键入: a=-4.5 9 7 -2.8 3.5 9.5 5.4 7.3; min(a),m,im=min(a),M,im=max(a),ra,ir=sort(a)返回最小值返回最小值最小值的下标最小值的下标升序排列后的向量升序排列后的向量每个元素的原有位置每个元素的原有位置

41、 ra=(升序排列)(升序排列) -4.5000 -2.8000 3.5000 5.4000 7 7.3000 9.0000 9.5000 ir=(升序排列前数的位置顺序)(升序排列前数的位置顺序) 1 4 5 7 3 8 2 6输出:输出: ans= -4.5000 m=-4.5000 im=1 M=9.5000 iM=6d=eig(A) 实际上,实际上,eig() 函数有两个返回值函数有两个返回值, v d=eig(A) , v是特征向量,是特征向量,d是特征值是特征值A = 1.2000 3.4000 5.6000 7.8000 4.2000 6.4000 8.6000 10.8000

42、2.4000 6.8000 11.2000 15.6000 1.8000 -0.4000 -2.6000 -4.8000eig(A)ans = 17.0896 0.0000 -3.0896 0.0000矩阵矩阵A的特征值的特征值v d=eig(A)v = 0.3467 0.3651 -0.3341 0.4300 0.6282 -0.1826 -0.0033 -0.3205 0.6935 -0.7303 -0.6681 -0.6491 -0.0653 0.5477 0.6648 0.5395d = 17.0896 0 0 0 0 0.0000 0 0 0 0 -3.0896 0 0 0 0 0.

43、0000调用调用eig()函数,可得到函数,可得到两个返还值。第一个是两个返还值。第一个是特征列向量构成的矩阵特征列向量构成的矩阵第二个是特征值构成的第二个是特征值构成的对角阵对角阵3.矩阵函数矩阵函数例如例如det(A) 行列式计算行列式计算inv(A) 矩阵的逆矩阵的逆orth(A) 正交化正交化poly(A) 特征多项式特征多项式rank(A) 矩阵的秩矩阵的秩trace(A) 矩阵的迹(对角元素之和)矩阵的迹(对角元素之和)zeros(m,n) m行行n列的零矩阵列的零矩阵ones(m,n) m行行n列的全列的全1矩阵矩阵eye(n) n阶单位矩阵阶单位矩阵rand(m,n) m行行n

44、列的均匀分布随机数矩阵列的均匀分布随机数矩阵randn(m,n) m行行n列的正态分布随机数矩阵列的正态分布随机数矩阵 利用帮助,了解向量函数利用帮助,了解向量函数max, min ,sum, mean, sort, length,矩阵函数,矩阵函数rand ,size的功能和用法。的功能和用法。 做做1.5 图形功能图形功能1.基本的绘图命令基本的绘图命令 plot命令打开一个图形窗口,将坐标轴缩扩以适应数据,绘制数据,如命令打开一个图形窗口,将坐标轴缩扩以适应数据,绘制数据,如果已经存在一个图形窗口,则果已经存在一个图形窗口,则plot命令会清除当前图形窗口的图形,绘制命令会清除当前图形窗

45、口的图形,绘制新的图形。新的图形。 1)plot(y) 当当y为向量时,以为向量时,以y的分量序号为横坐标,以分量本身为纵坐的分量序号为横坐标,以分量本身为纵坐标,用直线依次连接数据点,绘制曲线,标,用直线依次连接数据点,绘制曲线,例如例如 y=1 -3 5 -2 6 -3 7 -1 8, 各分量序号自然为各分量序号自然为 1 2 3 4 5 6 7 8 9 绘图结果为绘图结果为1.5.1 二维图形二维图形 2)plot(x,y) 以以x为横坐标,为横坐标,y为纵坐标绘制连线图。为纵坐标绘制连线图。若若x是向量,是向量,y是行数或列数与是行数或列数与x长度相等的矩阵,则绘制多条不同色彩的连线长

46、度相等的矩阵,则绘制多条不同色彩的连线图,图,x被作为这些曲线的共同横坐标。若被作为这些曲线的共同横坐标。若x和和y为同型矩阵,则以为同型矩阵,则以x,y对应列元对应列元素为横纵坐标分别绘制曲线,曲线条数等于矩阵的列数。素为横纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 3)plot(x1,y1,x2,y2,)在此格式中,每对)在此格式中,每对x,yx,y必须符合必须符合plot(x,y)plot(x,y)中的要求,不同对之间没有影响,命令将对每一对中的要求,不同对之间没有影响,命令将对每一对x,yx,y绘制曲线。绘制曲线。 以上三种格式中的以上三种格式中的x,yx,y都可以是表达式都可以是表

47、达式( (即可以为向量或数组的运行结果即可以为向量或数组的运行结果) )。若若y为实矩阵,则按列绘制每列对应的曲线,图中曲线数等于矩阵的列数。为实矩阵,则按列绘制每列对应的曲线,图中曲线数等于矩阵的列数。 例例1.1 作出作出y=sin(x)在在0,2 上的图形。上的图形。 例例1.2 在同一个坐标系下作出两条曲线在同一个坐标系下作出两条曲线y=sin(x)和和y=cos(x)在在 0,2 上的上的图形。图形。键入:键入: x=0:2*pi/30:2*pi;y=sin(x);cos(x); plot(x,y); plot( , )或键入:或键入: x=0:2*pi/30:2*pi; y1=si

48、n(x);y2=cos(x); plot(x,y1,x,y2)% 等分间隔点为等分间隔点为30个个键入:键入: x=linspace(0,2*pi,30); y=sin(x); plot(x,y);都可画出图都可画出图1.2. 多条曲线的另一种画法是用多条曲线的另一种画法是用hold命令。在已画好的图形上,若设置命令。在已画好的图形上,若设置Hold on,MATLAB将把新的将把新的plot命令产生的图形叠合在原来的图形上。而命令命令产生的图形叠合在原来的图形上。而命令hold off 将结束这种状态。例如,将结束这种状态。例如, x=linspace(0,2*pi,30); y=sin(x

49、);plot(x,y);先画好图先画好图1.1,然后用,然后用 hold on z=cos(x);plot(x,z); hold off增加增加cos(x)的图形,也可得到图的图形,也可得到图1.2. 课堂练习课堂练习如,命令如,命令plot(x,y,y:o),其中字符串,其中字符串“y:o”中,中,y 表示曲线颜色为黄色表示曲线颜色为黄色:表示曲线为点线:表示曲线为点线o 表示用小圆圈标记数据点表示用小圆圈标记数据点。字符串参数的取值如下:。字符串参数的取值如下: 2.基本的绘图控制基本的绘图控制 在调用在调用plot时可以指定颜色、线型和数据点标记,基本的调用格式为时可以指定颜色、线型和数

50、据点标记,基本的调用格式为 plot(x,y,color linestyle marker) 其中其中colir-linestyle-marker为一个字符串,由颜色、线型和数据点标记组为一个字符串,由颜色、线型和数据点标记组 成,例成,例颜色:颜色:y(黄黄);r(红红);g(绿绿);b(蓝蓝);w(白白);k(黑黑);m(紫紫); c(青青)。线型:线型:-(实线);:(点线);(实线);:(点线);-。(虚点线);。(虚点线);-(虚线)。(虚线)。数据点标记:。(小黑点);数据点标记:。(小黑点);+(加号);(加号);*(星号);(星号);o(小圆圈);(小圆圈);pentagram

51、(五角星)。五角星)。 坐标系的控制:坐标系的控制: MATLAB自动指定图形的横纵坐标自动指定图形的横纵坐标比例和显示的范围,如果你不满意,可有比例和显示的范围,如果你不满意,可有axis命令来控制,常用的有命令来控制,常用的有axis(xmin xmax ymin ymax),其中分别给出,其中分别给出x轴和轴和y轴的最小、最大轴的最小、最大值值axis equal x轴和轴和y轴的单位长度相同轴的单位长度相同axis square 图框呈方形图框呈方形axis off 取消坐标轴取消坐标轴MATLAB提供了标注图形的命令,常用的有提供了标注图形的命令,常用的有xlabel,ylabel和

52、和zlabel,它们它们分别用于对分别用于对x,y,z轴加标注;轴加标注;title用于给整个图形加标题;用于给整个图形加标题;text和和gtext用于在图形中特定的位置加字符串,前者字符串的位置在命令中指定,后用于在图形中特定的位置加字符串,前者字符串的位置在命令中指定,后者用鼠标指定;者用鼠标指定;grid在图形上加网格。在图形上加网格。 例例1.3在同一坐标系下画出在同一坐标系下画出sinx和和cosy的函数图形,并适当标注。的函数图形,并适当标注。键入:键入: x=linspace(0,2*pi,30);y=sin(x);cos(x); title(Sine and Cosine C

53、urves); plot(x,y);grid;xlabel(x);ylabel(y); text(3*pi/4,sin(3*pi/4),leftarrowsinx; text(3*pi/2,cos(3*pi/2), cosxrightarrow,HorizontalAlignment,right);切换到切换到MATLAB逐句执行逐句执行3.图形标注图形标注 若使命令若使命令gtext(sinx)代替命令代替命令text,则在图形窗口上会出现十字线,其交,则在图形窗口上会出现十字线,其交点是字符串的位置,移动鼠标可移动该交点,鼠标点击一下就可将字符串固点是字符串的位置,移动鼠标可移动该交点,鼠

54、标点击一下就可将字符串固定在那里。定在那里。Subplot(m,n,p)可在同一个图形窗口中,画出多幅不同坐标系中的图形。可在同一个图形窗口中,画出多幅不同坐标系中的图形。 该该命令把图形窗口划分为命令把图形窗口划分为mn个图形区域,个图形区域,p代表当前的区域号,在每个区域中分代表当前的区域号,在每个区域中分别画一个图。子图沿第一行从左至右编号,接着排第二行,依此类推。用法如下别画一个图。子图沿第一行从左至右编号,接着排第二行,依此类推。用法如下例例 x=linspace(0,2*pi,30);y=sin(x);z=cos(x); u=2*sin(x).*cos(x); v=sin(x)./

55、cos(x); subplot(2,2,1),plot(x,y),title(sin(x) subplot(2,2,2),plot(x,z),title(cos(x) subplot(2,2,3),plot(x,u),title(2sin(x)cos(x) subplot(2,2,4),plot(x,v),title(sin(x)/cos(x);y、z两个向量对应分量相两个向量对应分量相乘:乘:.*采用采用.*,可以一次处理,可以一次处理n个个自变量的自变量的sin、cos相乘相乘采用采用./,可以一次处理,可以一次处理n个个自变量的自变量的sin、cos相除相除 4.多幅图形多幅图形例例1.

56、4 作螺旋线作螺旋线x=sint,y=cost,z=t. 键入:键入: t=0:pi/50:10*pi; plot3(sin(t),cos(t),t);对于对于 t 的的501个取值,绘制并连接个取值,绘制并连接501个个空间点,形成空间曲线空间点,形成空间曲线1.5.2 三维图形三维图形1.空间曲线空间曲线 2. 空间曲面绘图空间曲面绘图MATLAB要求我们要求我们 (1) 给出平面点的横坐标向量给出平面点的横坐标向量x, 纵坐标向量纵坐标向量y (2) 利用横坐标向量利用横坐标向量x,纵坐标向量,纵坐标向量y,生成平面点集,生成平面点集 (x , y) 的横坐标、的横坐标、纵坐标两个矩阵。

57、纵坐标两个矩阵。xyX=1 2 3 41 2 3 41 2 3 4Y=135135135135例:例:x=1 2 3; y=4 5; X Y=meshgrid(x,y); % 平面点集的横坐标矩阵为平面点集的横坐标矩阵为X,纵坐标矩阵为,纵坐标矩阵为Y对每一个平面点对每一个平面点(x,y),即,即X,Y的对应分量定义函数值的对应分量定义函数值 z=f(x,y)这些函数值其实是空间点的立坐标矩阵这些函数值其实是空间点的立坐标矩阵Z。(4) 对空间点集对空间点集 ( X , Y , Z) 完成曲面绘图。完成曲面绘图。实现上述任务的命令为:实现上述任务的命令为: 定义向量定义向量x,y; X Y=m

58、eshgrid(x,y); 由由X,Y定义空间点的立坐标定义空间点的立坐标 Z, 即即Z=f(X,Y) mesh(X,Y,Z); (或或surf(X,Y,Z)X=1 2 31 2 3Y=4 4 45 5 5Z=X.2+Y.2;mesh(X,Y,Z)meshgrid平面点的横坐标构成平面点的横坐标构成X矩阵;平面点的纵坐标构成矩阵;平面点的纵坐标构成Y矩阵;空间点的是定义在平面点上矩阵;空间点的是定义在平面点上x向量为平面点的横坐标向量为平面点的横坐标y向量为平面点的纵坐标向量为平面点的纵坐标图形示例:图形示例:mesh例例1.5 作曲面作曲面z=f(x,y)的图形的图形2222sin, 7.5

59、,7.5xyzx yxy键入:键入: x=-7.5:0.5:7.5;y=x; X,Y=meshgrid(x,y); R=sqrt(X.2+Y.2); Z=sin(R)./(R+eps) ; mesh(X,Y,Z);课堂例题课堂例题 x=0:pi/100:2*pi; y=x;X Y=meshgrid(x,y); Z=sin(X).*cos(Y); mesh(X,Y,Z)等高线等高线MATLAB还提供了画二维和三维等高线图的函数还提供了画二维和三维等高线图的函数contour和和contour3. 例例1.6 作出库函数作出库函数peaks产生的二元函数的曲面及其等值线图。产生的二元函数的曲面及其

60、等值线图。键入:键入: X,Y,Z=peaks(30); surf(X,Y,Z); figure(2); %打开另一个图形窗口打开另一个图形窗口 contour(X,Y,Z,16); figure(3); contour3(X,Y,Z,16); 可将上述的画网格图的可将上述的画网格图的mesh命令改为命令改为surf(X,Y,Z);则输出的曲;则输出的曲面图,效果有所不同。面图,效果有所不同。%产生网格细度为产生网格细度为30的描述山峰特征的空间点的横的描述山峰特征的空间点的横坐标、纵坐标、立坐标矩阵坐标、纵坐标、立坐标矩阵%16个等距的水平平面与山峰相交,交线投影在平面上个等距的水平平面与山

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论