Matlab软件应用与开发.ppt
《Matlab软件应用与开发.ppt》由会员分享,可在线阅读,更多相关《Matlab软件应用与开发.ppt(81页珍藏版)》请在三一办公上搜索。
1、Matlab 软件应用与开发,主讲教师:李云东 联系方式:66642(短号),课程安排,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语言开发了Matlab的第二代专业版本,这一版本同时具有了数值计算和数
3、据可视化的功能。,1.3 Matlab的特点,Matlab操作简单,功能强大,应用广泛。它具有编程效率高、用户使用方便、扩充能力强、语句简单、高效方便的矩阵和数组运算、方便的绘图功能、开放的源程序等特点。Matlab具有很多有用的工具箱,如通讯工具箱、控制系统工具箱、财政金融工具箱、图像处理工具箱、神经网络工具箱、优化工具箱、信号处理工具箱、统计工具箱、小波工具箱等。最新的版本是2009年3月6日发布的Matlab 7.8(R2009a)。,1.4 如何学习Matlab,Matlab的网络资源 WWW网站 匿名FTP网站 http:/Matlab中国论坛查看帮助,使用help命令(help+函
4、数名)多上机实验,熟能生巧,2.Matlab的桌面和桌面工具,2.1命令窗口,命令窗口:是用户与Matlab交互的工具,是Matlab执行函数命令的窗口。默认情况下,命令窗口总是打开的。7.0版本中,通过选取【Desktop】【Command Window】;命令窗口控制函数:home:移动光标到左上角clc:清除命令窗口(工作空间的变量清除用命令clear)命令历史窗口:在命令窗口每执行一条命令,都将在历史窗口记录下来。反过来,在命令历史窗口只须双击某条历史命令,该命令就会在命令窗口重新执行一次。,2.2 当前目录浏览器和搜索路径,1)当前目录浏览器 Matlab将许多内部函数放在不同的目录
5、下,在调用函数时,首先查看当前目录,然后查看搜索路径中的目录。任何需要执行的文件都必须放在当前目录或搜索路径中,文件才能顺利运行。可以在命令窗口输入cd命令改变当前目录。一种改变当前目录快速而又高效的方法是使用桌面上的目录工具条。,2)搜索路径,文件在执行时必须位于当前目录或者是搜索路径中。使用path命令可以查看Matlab默认的搜索路径。例2.1 path MATLABPATHD:MATLAB701toolboxmatlabgeneralD:MATLAB701toolboxmatlabops例2.2 将自己的目录添加到搜索路径中、删除已有搜索路径、改变搜索顺序。pathtool,在Set
6、Path对话框中设置。,3)常用命令,clear:清除当前工作空间的变量例2.3 clear%清除当前工作空间的所有变量 clear var1 var2%清除变量var1、var2 clear a*%清除以a开头的变量who:查看当前工作空间的所有变量(信息简短)whos:作用同who。给出变量的大小、数据类型等具体内容。,课后练习,(1)认识Matlab 7.0的各种操作界面。(2)学会使用查看帮助信息,使用help、helpdesk、doc等帮助命令(3)利用目录工具条、cd命令改变当前目录。(4)利用pathtool对话框设置搜索路径。(5)who、whos查看当前工作空间的变量名及详细
7、信息。(6)通过查看帮助,学会使用save命令,保存变量到*.mat文件中,3.数组,数组的创建数组中元素的引用和变形数组运算数组操作字符串和数组矩阵运算矩阵特征参数,3.1数组的创建,3.1.1 构造数组 可以通过键入数组中每个元素的值来建立并输入一个数组,当数组中的元素个数较少时,这种方法非常适用。创建一个数组,只须以左方括号开始,以逗号或空格为间隔输入每行元素值,各行元素间以分号为间隔,最后以右方括号结尾即可。例3.1 a=0,1,2,3,4 5 6 7,8,9 a=0 1 2 3 4 5 6 7 8 9cos(a)ans=Columns 1 through 8 1.0000 0.540
8、3-0.4161-0.9900-0.6536 0.2837 0.9602 0.7539 Columns 9 through 10-0.1455-0.9111,3.1.2 创建数组的常用方法,1)冒号法。其基本格式为:X=初值:增量:终值 返回值X是从初值开始,以增量为步长,直到不超过终值的所有元素所构成的向量。默认步长为1,可以省略不写。例 3.2 a=1:1.5:8a=1.0000 2.5000 4.0000 5.5000 7.0000a=3:-pi:-5a=3.0000-0.1416-3.2832,2)调用函数linspace或logspace,函数linspace(a,b,n)返回以a为
9、起点、b为终点的等间距的共n个元素的数组。函数logspace与linspace类似,它相当于在linspace命令的基础上再对每个元素做10的指数幂运算。例3.3 linspace(0,1,6)ans=0 0.2000 0.4000 0.6000 0.8000 1.0000logspace(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
10、 9 0-1-2-3-4-5思考:如果输入z=x;y,输出结果会是怎样?,3.2 数组中元素的引用和变形,引用数组中的元素是利用元素的下标。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=345
11、%由回车换行分隔,列向量和行向量之间可以通过转置符 互相转换。不过需要注意的是,对于复数向量,转置符的作用是复共轭转置。符号.是对于复数向量的转置运算。,3.3 数组运算,Matlab数组运算分为标量与数组运算和数组与数组之间的运算。与矩阵不同的是,这两种运算都是在元素与元素之间进行的。3.3.1 标量与数组之间的运算 标量与数组进行四则运算就是这个标量对数组中的每个元素进行同样的运算。例3.8 a=1:5;b=a+3,c=2*a-5b=4 5 6 7 8c=-3-1 1 3 5,3.3.2 数组与数组之间的运算,当两个数组具有相同维数时,数组与数组之间可以进行加、减、乘、除运算。,3.4 数
12、组操作,3.4.1 Matlab对数据的物理存放形式 Matlab中,数据的物理形式是按列存放。对于一个二维数组,在内存中的单元存放顺序是:第一列元素,第二列元素,最后一列元素。对于多维数组,则是把第二维以后的维数作为数据平面(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
13、 4 5 length(var)%作用同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)对角阵,其中第
14、m条对角线的 元素即为向量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的行列式,课后练习,(1)创建下列数组1
15、0 8 6 4 2 0 0 3 5 7 9(2)使用“X=pascal(4)”命令生成一个4*4的pascal矩阵。对X进行下列操作:查看X的第一列元素;提取X的第一行和第三行元素,存入变量Y;提取X的前两行,后两列元素,存入变量Z;把X扩展成5*4的矩阵,使第5行元素为服从平均分布的随机数;删除数组X的最后一列。(3)创建字符数组“Robert.white”,并存入变量name。查看name在工作空间的存储方式。最后提取字符串“white”,存入变量subname。(4)将工作空间的变量X、name、subname存入data.mat文件。,课后练习续,(5)创建向量u、v和标量s:u=3;
16、1;4 v=2 0-1 s=7计算u*v,v*u和(u+s)*v。(6)根据下面两个矩阵:回答相关问题:A.*B和A*B的结果如何,它们是否相同,为什么?计算A.B,A/B和AB的结果,并分别解释它们的意义。,4.Matlab语言程序设计,4.1 运算符 Matlab的算术运算符可按优先级由低到高分为5级,每一级内优先级相同,运算时从左向右结合。各级所包含的运算符如下:(1)转置符(.)、幂符(.)、复共轭转置()、矩阵幂符()。(2)标量加(+)、标量减(-)。(3)向量乘法(.*)、向量右除(./)、向量左除(.)、矩阵乘法(*)、矩阵右除(/)、矩阵左除()。(4)加法(+)、减法(-)
17、。(5)冒号运算符。,4.2 关系运算符、逻辑运算符,关系运算符 大于=大于或等于=等于=不等于,逻辑运算符&逻辑与A&B and(A,B)|逻辑或A|B or(A,B)逻辑非A not(A)Xor 逻辑异或,4.3 逻辑函数,all 测试是否所有元素都非0any 测试是否存在非零元素exist 检查文件或变量是否存在find 搜索非零元素的索引和值ischar 测试是否为字符串数组,是则返回1isempty 测试是否是空数组,是则返回1isfinite 数组的元素有限时,返回数组的相应位置为1ishold 若“hold”命令处于“on”状态时,则返回1isinf 数组的元素无穷大时,返回数组
18、的相应位置为1isletter 数组的元素为字母时,返回数组的相应位置为1isreal 参数无虚部,返回1isspace 元素为空格字符,返回1isstr 参数为字符串,返回1,4.4 数学函数,4.5 Matlab语言程序设计,Matlab语言为解释性程序设计语言,程序中的语句边解释边执行。Matlab是用C语言编写的,具有C语言自由、灵活、简洁的风格。使用Matlab书写程序,形式非常自由,而且利用丰富的库函数,避免了复杂的子程序编写。4.5.1 M文件 前面提到的都是单一的语句和命令,若要Matlab完成复杂的任务,则必须建立扩展名为.m的程序文件。M文件包含两类:命令文件和函数文件。前
19、者不要求输入参数,也不返回任何参数;而后者可以输入参数,也可以返回参数。命令文件只对工作空间进行操作;而函数文件的变量为局部变量,只有输入、输出的变量被保留在工作空间。,4.5.2 命令文件,若要一次执行大量的Matlab命令,可将这些命令编写在一个扩展名为.m的文件中,并在Matlab命令输入窗口键入此文件名即可。例4.1(1)建立M文件。命令窗口键入edit firstest,建立firstest.m文件。(2)代码编写。进入代码编辑器中,输入下列代码:%第一个测试命令文件,计算一数组的正弦函数x=0;y=2*pi;z=sin(x:pi/4:y),4.5.2 命令文件(续),(3)保存文件
20、,并执行。通过编辑器【Debug】【Run】,或者在命令窗口输入firstest执行,在命令窗口可以看到执行结果。注:firstest.m的第一行以%开头的行是注解,可以使程序易于理解与管理。一般地,第一注解行通常用来简短说明此M文件的功能,使用help firsttest命令可查看该注释;命令窗口输入whos查看工作空间的变量,可以发现执行时所建立的变量全部保留在工作空间中。一行代码过长时使用符号“”续行符连接,4.5.3 函数文件,函数文件的一般格式为:function 输出表=函数名(输入表)注释行函数体例4.2 计算1+2+n的函数:function output=mysum(n)%m
21、ysum函数计算直到n的和output=0;%初始化for i=1:n output=output+i;end,4.5.3 函数文件(续),函数文件的第一行必须以关键字function开始,表明该文件是函数文件。输入表以逗号相分割形参。输出表是函数的返回值。如果返回值只有一个,方括号可以省略;当返回值不止一个时,输出表中的各个变量要以逗号隔开。函数文件的文件名必须与函数名相同。函数体任意位置都可以包含注释语句。在函数体中的空行将被忽略。函数体是实现函数功能的部分。函数体包含函数调用、程序流程控制、输入、输出、赋值、计算等语句。对于定义好了的函数,在命令窗口或其他文件中均可调用。调用函数时,参数
22、可以是常量、有确定值的变量或表达式。,4.5.3 函数文件递归函数,例4.3 function output=fact(n)%fact函数通过递归函数求解n!if n=1%判断语句,递归结束条件 output=1;return;endoutput=n*fact(n-1);在写一个递归函数时,一定要包含结束条件,否则函数将一直调用自身,直到内存被耗尽为止。本例中n=1即为结束条件。,4.6 变量和常量变量,在Matlab中,变量分为局部变量和全局变量。变量名由一个字母开头,后面可以跟字母、数字、下划线等。在Matlab中,变量区分大小写。在M文件中,变量在使用前无需定义维数和每维的大小,但把一个
23、变量赋给另一个变量时,要求赋值号右边的变量有值。在M文件中定义的变量是局部变量,其作用域仅在本函数,仅能被本函数调用。全局变量定义后,能被其他函数调用,在命令窗口也可以调用。因此,可以在命令窗口或任意一个函数中改变全局变量的值。全局变量用global定义。如定义全局变量a,b:global a b。,4.6 变量和常量常量,Matlab为特定的常数预留了一些名称,这些常量也可以重新赋值。常量在工作空间不能直接看到,使用者可直接调用。,4.7 程序流程控制语句,4.7.1 赋值语句结构1)直接赋值语句 基本格式为:变量名=赋值表达式 上述语句把赋值表达式的值赋给变量。如果表达式后没有分号,则在M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 软件 应用 开发
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6512186.html