第六讲 MATLAB 语言程序设计(详版课资)

上传人:博****1 文档编号:569411275 上传时间:2024-07-29 格式:PPT 页数:33 大小:716KB
返回 下载 相关 举报
第六讲 MATLAB 语言程序设计(详版课资)_第1页
第1页 / 共33页
第六讲 MATLAB 语言程序设计(详版课资)_第2页
第2页 / 共33页
第六讲 MATLAB 语言程序设计(详版课资)_第3页
第3页 / 共33页
第六讲 MATLAB 语言程序设计(详版课资)_第4页
第4页 / 共33页
第六讲 MATLAB 语言程序设计(详版课资)_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《第六讲 MATLAB 语言程序设计(详版课资)》由会员分享,可在线阅读,更多相关《第六讲 MATLAB 语言程序设计(详版课资)(33页珍藏版)》请在金锄头文库上搜索。

1、第六讲第六讲 MATLAB 语言程序设计语言程序设计6.1 MATLAB语言的函数的基本结构语言的函数的基本结构6.2 全局、局部变量、子函数与私有目录全局、局部变量、子函数与私有目录6.3 MATLAB 函数的跟踪调试函数的跟踪调试6.4 MATLAB工具箱编写技巧工具箱编写技巧6.5 MATLAB语言的程序流程语句语言的程序流程语句6.6 MATLAB中新的数据结构中新的数据结构6.7 MATLAB 语言编程技巧语言编程技巧6.8 例子与习题例子与习题1课堂优质6.1 MATLAB 语言函数的基本结构语言函数的基本结构MATLAB语言提供了两种源程序文件格式语言提供了两种源程序文件格式M脚

2、本文件:脚本文件:它实际上是它实际上是MATLAB命令窗中一系命令窗中一系列命令的组合,它没有输入输出参数传递的过程,列命令的组合,它没有输入输出参数传递的过程,它直接对工作区中的变量进行处理操作它直接对工作区中的变量进行处理操作M函数:函数:这是这是MATLAB程序设计的主流,它可以程序设计的主流,它可以传递参数及返回结果,我们主要介绍传递参数及返回结果,我们主要介绍M函数的编函数的编写方法与技巧。写方法与技巧。2课堂优质6.1 MATLAB 语言函数的基本结构语言函数的基本结构M函数是由函数是由 function 语句引导的,其基本格式如下语句引导的,其基本格式如下function 返回变

3、量列表函数名(输入变量列表)返回变量列表函数名(输入变量列表)由该符号引导的注释语句段,在由该符号引导的注释语句段,在MATLAB命令窗命令窗中用命令中用命令 help 函数名函数名 所得到的帮助就是这段文字。所得到的帮助就是这段文字。输入、返回变量格式的检测输入、返回变量格式的检测函数体语句函数体语句只要进入该函数,只要进入该函数,MATLAB就自动生成就自动生成 nargin 和和 nargout 两两个变量,分别表示输入变量和输出变量的个数。程序中可以个变量,分别表示输入变量和输出变量的个数。程序中可以根据这两个变量的值来判断用户输入参数的情况。根据这两个变量的值来判断用户输入参数的情况

4、。3课堂优质6.1 MATLAB 语言函数的基本结构语言函数的基本结构M函数典型例子函数典型例子function magout,phase,w = bode(a,b,c,d,iu,w)%BODE Bode frequency response of LTI models.% BODE(SYS) draws the Bode plot of the LTI model SYS (created with% either TF, ZPK, SS, or FRD). The frequency range and number of % points are chosen automatically

5、.% See also BODEMAG, NICHOLS, NYQUIST, SIGMAni = nargin;no = nargout;.% end bode4课堂优质6.1 MATLAB 语言函数的基本结构语言函数的基本结构说明说明注释符号引导的内容不能含空行,否则,后续的内容注释符号引导的内容不能含空行,否则,后续的内容不能由不能由 help 命令看到,大部分作者及版权信息都是空行命令看到,大部分作者及版权信息都是空行后的注释内容。后的注释内容。当返回变量只有一个时,不用方框号括起来。当返回变量只有一个时,不用方框号括起来。函数名与该函数存盘用的文件名要一样,否则函数名与该函数存盘用的文

6、件名要一样,否则MATLAB寻找的是文件名符合的函数,而且老版本的寻找的是文件名符合的函数,而且老版本的MATLAB不不能用超过能用超过8个字符的函数名。个字符的函数名。5课堂优质6.1 MATLAB 语言函数的基本结构语言函数的基本结构说明(续)说明(续)可以用可以用 type 函数名函数名 来看函数文件的内容。来看函数文件的内容。可以用可以用 edit 函数名函数名 来查看或编辑函数文件。来查看或编辑函数文件。为了使得为了使得MATLAB认识该函数,要将该函数所在的目录用认识该函数,要将该函数所在的目录用cd 命令设为当前目录,或用命令命令设为当前目录,或用命令addpath添加到添加到M

7、ATLAB的路径中去(也可以用的路径中去(也可以用MATLAB菜单下的菜单下的PATH命令)。命令)。6课堂优质6.2 全局、局部变量、子函数与私有目录全局、局部变量、子函数与私有目录MATLAB工作区中的变量和工作区中的变量和M函数内部的变量都是局部函数内部的变量都是局部变量,他们是互不干扰的,但也可以显性地把变量定义变量,他们是互不干扰的,但也可以显性地把变量定义为全局变量,使得他们在整个程序中都起作用。为全局变量,使得他们在整个程序中都起作用。全局变量定义格式为全局变量定义格式为 global a b c d注意变量之间不能用逗号分开,在注意变量之间不能用逗号分开,在MATLAB工作区和

8、工作区和M函数内部同时要声明该变量为全局变量。函数内部同时要声明该变量为全局变量。为保证函数的独立性,一般情况下不建议使用全局变量。为保证函数的独立性,一般情况下不建议使用全局变量。7课堂优质6.2 全局、局部变量、子函数与私有目录全局、局部变量、子函数与私有目录从从MATLAB 5.0 开始引入子函数。所谓子函数就是一个开始引入子函数。所谓子函数就是一个函数文件中不但包含该函数本身,还包含专门由该函数函数文件中不但包含该函数本身,还包含专门由该函数调用的下一级函数,这样的专门函数称为子函数。子函调用的下一级函数,这样的专门函数称为子函数。子函数是不能有其他文件中的函数调用的。数是不能有其他文

9、件中的函数调用的。私有目录即在当前的私有目录即在当前的 MATLAB 目录下建立一个目录下建立一个 private 子目录,该目录下的内容只能由当前目录下的函数调用,子目录,该目录下的内容只能由当前目录下的函数调用,而不能有其他函数调用。而不能有其他函数调用。8课堂优质6.3 MATLAB函数的跟踪调试函数的跟踪调试用用 MATLAB 自带的编辑器自带的编辑器 EDIT编辑所要跟踪调试的程编辑所要跟踪调试的程序,在希望的语句上设置断点,在序,在希望的语句上设置断点,在MATLAB命令窗按正命令窗按正常方式运行命令,程序会自动停留在所设的断点处。常方式运行命令,程序会自动停留在所设的断点处。调试

10、状态下,调试状态下,MATLAB命令窗的命令提示符变为命令窗的命令提示符变为 K。这时可输入任何这时可输入任何MATLAB命令,变量为函数内部的局部命令,变量为函数内部的局部变量,而不是工作区中的变量。变量,而不是工作区中的变量。调试状态下,鼠标指针指向想查询的局部变量上将立即调试状态下,鼠标指针指向想查询的局部变量上将立即能显示出该变量值。能显示出该变量值。9课堂优质6.3 MATLAB函数的跟踪调试函数的跟踪调试跟踪调试程序中跟踪调试程序中 Debug 菜单下的子菜单项的功能如下表菜单下的子菜单项的功能如下表菜单项菜单项执行结果执行结果Set/Clear Breakpoint设置或清除断点

11、设置或清除断点Continue继续执行到下一个断点继续执行到下一个断点Step单步执行单步执行Step in单步,若该步调用函数,则在该单步,若该步调用函数,则在该函数中也单步执行函数中也单步执行Exit Debug Mode 退出调试状态退出调试状态10课堂优质6.4 MATLAB工具箱编写技巧工具箱编写技巧将为某种专门目的编写一组将为某种专门目的编写一组 MATLAB 函数放在一个目录函数放在一个目录下,就形成了一个新的工具箱。下,就形成了一个新的工具箱。为了使得用户能象为了使得用户能象MATLAB提供的工具箱一样使用该工具提供的工具箱一样使用该工具箱,必须将该工具箱所在的目录用命令箱,必

12、须将该工具箱所在的目录用命令 addpath 添加到添加到MATLAB的搜索路径中去。的搜索路径中去。为了能使得命令为了能使得命令 help 工具箱名工具箱名 能列出该工具箱的所有函数能列出该工具箱的所有函数的功能介绍,应该按下述格式编写一个名为的功能介绍,应该按下述格式编写一个名为 contents.m 的的文件。第一行给出工具箱名称,第二行给出版本信息,由文件。第一行给出工具箱名称,第二行给出版本信息,由命令命令 ver 工具箱名工具箱名 可以获得该工具箱的版本信息。可以获得该工具箱的版本信息。一般在该工具箱下还有一文件一般在该工具箱下还有一文件 readme.m 用来存放有关该用来存放有

13、关该工具箱的版本升级信息,使用命令工具箱的版本升级信息,使用命令 whatsnew 工具箱名工具箱名 查查看的就是该文件的信息。看的就是该文件的信息。11课堂优质6.4 MATLAB工具箱编写技巧工具箱编写技巧 type contents.m% Symbolic Math Toolbox.% Version 2.1.2 (R12.1) 11-Sep-2000% New Features.% Readme - Overview of the new features in/changes made to% the Symbolic and Extended Symbolic Math Toolb

14、oxes.% Calculus.% diff - Differentiate.% Linear Algebra.% poly - Characteristic polynomial.% Simplification.% simplify - Simplify.% Solution of Equations.% solve - Symbolic solution of algebraic equations.% Variable Precision Arithmetic.% vpa - Variable precision arithmetic.12课堂优质6.5 MATLAB语言的程序流程语句

15、语言的程序流程语句MATLAB 提供了循环语句结构、条件语句结构、开关语句提供了循环语句结构、条件语句结构、开关语句结构以及试探语句。结构以及试探语句。for 循环变量循环变量 = s1:s2:s3 循环体语句组循环体语句组end循环语句结构循环语句结构for 循环变量循环变量 = Vector 循环体语句组循环体语句组end13课堂优质6.5 MATLAB语言的程序流程语句语言的程序流程语句例一、例一、 t=0; for i = 1:1:100; t=t+i; end循环语句结构循环语句结构例二、例二、 w= 0.1:0.05:1, 1.5:0.5:10, 15:5:100, 150:50:

16、1000; a=0 1;-1 2; b=0;1; c=1 2; d=0; m=; I=eye(size(A); for i=w, m=m; C*inv(sqrt(-1)*I*I-A)*B+D); end14课堂优质6.5 MATLAB语言的程序流程语句语言的程序流程语句条件语句结构条件语句结构if 条件式条件式1 条件块语句组条件块语句组1else 条件块语句组条件块语句组2endif 条件式条件式1 条件块语句组条件块语句组1elseif 条件式条件式2 条件块语句组条件块语句组2else 条件块语句组条件块语句组n+1end15课堂优质6.5 MATLAB语言的程序流程语句语言的程序流程语

17、句条件语句结构条件语句结构例一例一if a=0 a=1;else a=-1;end例二例二if a0 a=1elseif a student_rec.number=1; student_rec.name=Ying; student_rec.height=165; student_rec.test=100,80,75;77,60,92;67,28,80;100,89,78; student_recstudent_rec = number: 1 name: Ying height: 165 test: 4x3 double18课堂优质6.6 MATLAB中新的数据结构中新的数据结构数据结构体数据结

18、构体 struct引用成员变量引用成员变量 student_rec.testans = 100 80 75 77 60 92 67 28 80 100 89 78建立结构体类型的数组建立结构体类型的数组 b(50,2)=struct(student_rec)b = 50x2 struct array with fields: number name height test19课堂优质6.6 MATLAB中新的数据结构中新的数据结构数据结构体数据结构体 struct修改结构数值元素的取值修改结构数值元素的取值增加结构体成员增加结构体成员 b(43,2).number=50+43; b(43,2)

19、.name=Gan; b(43,2).height=156; b(43,2).test=83,80,78;97,80,62;90,20,30;30,20,80; b(1,1).weight=90b = 50x2 struct array with fields: number name height test weight删除结构体成员删除结构体成员 b=rmfield(b,weight)b = 50x2 struct array with fields: number name height test20课堂优质6.6 MATLAB中新的数据结构中新的数据结构类类 class类不但包含成员变

20、量,还包含成员函数,我们通过一个例子类不但包含成员变量,还包含成员函数,我们通过一个例子来介绍类的构造,下面建立多项式类。来介绍类的构造,下面建立多项式类。1.首先选定一个类的名字,如多项式类我们选为首先选定一个类的名字,如多项式类我们选为 polynom。2.以这个名字在当前目录下建立一个子目录,而且要加符号以这个名字在当前目录下建立一个子目录,而且要加符号,即建立子目录,即建立子目录 polynom。该目录无需在。该目录无需在MATLAB路路径下再指定。径下再指定。21课堂优质6.6 MATLAB中新的数据结构中新的数据结构polynom类的数据结构类的数据结构多项式类只包含一个数据成员即

21、多项式类只包含一个数据成员即 p.c,它即是多项式系数,幂次从高,它即是多项式系数,幂次从高到底。该成员变量只能被到底。该成员变量只能被 polynom目录下的成员函数访问。目录下的成员函数访问。polynom类的成员函数类的成员函数构造函数构造函数 polynom.m多项式到双精度数的转换函数多项式到双精度数的转换函数多项式到字符串的转换函数多项式到字符串的转换函数显示函数显示函数A subsref method重载运算符重载运算符 +, -, 和和 * 重载函数重载函数 roots, polyval, plot, 和和 diff22课堂优质function p = polynom(a)%P

22、OLYNOM Polynomial class constructor.% p = POLYNOM(v) creates a polynomial object from the vector v,% containing the coefficients of descending powers of x.if nargin = 0 p.c = ; p = class(p,polynom);elseif isa(a,polynom) p = a;else p.c = a(:).; p = class(p,polynom);end6.6 MATLAB中新的数据结构中新的数据结构polynom类

23、的构造函数类的构造函数 polynom.m p = polynom(1 0 -2 -5)p = polynom object: 1-by-123课堂优质6.6 MATLAB中新的数据结构中新的数据结构function c = double(p)% POLYNOM/DOUBLE Convert polynom object to coefficient vector.% c = DOUBLE(p) converts a polynomial object to the vector c% containing the coefficients of descending powers of x.

24、c = p.c;polynom类的转换函数类的转换函数 double.mfunction display(p)% POLYNOM/DISPLAY Command window display of a polynomdisp( );disp(inputname(1), = )disp( );disp( char(p)disp( );polynom类的显示函数类的显示函数 display.m double(p)ans = 1 0 -2 -5 display(p) p = x3 - 2*x - 524课堂优质6.6 MATLAB中新的数据结构中新的数据结构function r = plus(p,q

25、)% POLYNOM/PLUS Implement p + q for polynoms.p = polynom(p);q = polynom(q);k = length(q.c) - length(p.c);r = polynom(zeros(1,k) p.c + zeros(1,-k) q.c);polynom类重载运算符类重载运算符 plus.mfunction r = mtimes(p,q)% POLYNOM/MTIMES Implement p * q for polynoms.p = polynom(p);q = polynom(q);r = polynom(conv(p.c,q.

26、c);polynom类重载类重载*运算符运算符 mtimes.m25课堂优质6.6 MATLAB中新的数据结构中新的数据结构单元结构单元结构 cell单元结构类似于数组,但单元结构中各元素可以是不同属性单元结构类似于数组,但单元结构中各元素可以是不同属性的数据,见下例。的数据,见下例。1.访问单元数据要用带有大括号下标的形式,不能用圆括号。访问单元数据要用带有大括号下标的形式,不能用圆括号。2.可以使用可以使用 celldisp 函数来直接显示整个单元。函数来直接显示整个单元。3.删除第删除第n个单元元素用下面命令:个单元元素用下面命令: a(n)=; 注意用圆括号。注意用圆括号。 a=1,Y

27、ing,180,magic(3)a = 1 Ying 180 3x3 double a4ans = 8 1 63 5 7 4 9 226课堂优质6.6 MATLAB中新的数据结构中新的数据结构单元结构单元结构 cell应用应用varargin 表示输入变量列表,是一个单元结构变量表示输入变量列表,是一个单元结构变量varargout 表示输出变量列表,是一个单元结构变量表示输出变量列表,是一个单元结构变量function a=convs(varargin)a=varargin1;for i=2:length(varargin) a=conv(a,varargini);end p=1 2 4 0

28、 5;q=1 2;f=1 2 3; g=convs(p,q,f,1 1,1 3,1 4);g= 1 11 56 176 376 578 678 648 527 315 9027课堂优质6.7 MATLAB语言编程技巧语言编程技巧MATLAB运行机制运行机制MATLAB 语言在函数调用中或文件执行时,如果遇到了某语言在函数调用中或文件执行时,如果遇到了某一个名字,则按照下面的优先级顺序对这个名字进行判定。一个名字,则按照下面的优先级顺序对这个名字进行判定。判定这个名字是否为变量名判定这个名字是否为变量名判定这个名字是否为本函数内部的子函数判定这个名字是否为本函数内部的子函数判定这个名字是否为本目

29、录下的私有目录内函数判定这个名字是否为本目录下的私有目录内函数判定这个名字是否为判定这个名字是否为 MATLAB 的内在函数名的内在函数名判定这个名字是否为判定这个名字是否为 MATLAB 路径下的路径下的 Mex 型文件型文件判定这个名字是否为判定这个名字是否为 MATLAB 路径下的路径下的 M 函数函数MATLAB 搜索路径的顺序是按照其路径设定文件搜索路径的顺序是按照其路径设定文件 pathdef.m 中的先后次序来进行的。中的先后次序来进行的。28课堂优质6.7 MATLAB语言编程技巧语言编程技巧MATLAB运行机制运行机制用户可以用命令用户可以用命令 exist 来查询当前的工作

30、区下是否存在一个来查询当前的工作区下是否存在一个名字,其调用格式为:名字,其调用格式为: i=exist(字符串字符串),例如,例如 i=exist(A);i=1,则表示当前工作区下存在变量,则表示当前工作区下存在变量 Ai=2,则表示,则表示MALTAB工作路径下存在文件工作路径下存在文件 A.mi=3,则表示,则表示MATLAB工作路径下存在文件工作路径下存在文件 A.dlli=4,则表示表示存在,则表示表示存在 Simulink 文件文件 A.mdli=5,则表示存在内部,则表示存在内部 MALTAB 函数函数 A( )i=6,则表示,则表示MATLAB工作路径下存在伪代码文件工作路径下

31、存在伪代码文件 A.pi=7,则表示,则表示MATLAB工作路径下存在一个工作路径下存在一个A子目录子目录i=0,则表示不存在任何和,则表示不存在任何和 A 有关的变量和文件有关的变量和文件29课堂优质6.7 MATLAB语言编程技巧语言编程技巧测定程序执行时间和时间分配测定程序执行时间和时间分配tic 和和 toc 是启动和停止秒表,是启动和停止秒表, cputime 获取获取 CPU时间时间 tic,t=cputime;a=hilb(1000);toc,cputime-telapsed_time = 0.7030ans = 0.7500M 函数耗时剖析命令函数耗时剖析命令 profilep

32、rofile on待测函数名待测函数名profile reportprofile off30课堂优质6.7 MATLAB语言编程技巧语言编程技巧加快加快MALTAB程序执行速度的建议程序执行速度的建议尽量避免使用循环尽量避免使用循环多重循环情况下,外循环次数要少多重循环情况下,外循环次数要少大型矩阵要预先定维大型矩阵要预先定维优先考虑内在函数优先考虑内在函数采用有效的算法采用有效的算法应用应用 Mex 技术技术31课堂优质6.8 例子与习题例子与习题例一、分别用例一、分别用 for 和和 while 循环结构编写程序,写出循环结构编写程序,写出并考虑一种避免循环的简洁方法来进行求和,并考虑一种

33、避免循环的简洁方法来进行求和,并比较各种算法的运行时间。并比较各种算法的运行时间。例二、用循环语句形成一个有例二、用循环语句形成一个有20个分量的数组,使其个分量的数组,使其元素满足元素满足 Fibonacci 规则。规则。32课堂优质6.8 例子与习题例子与习题例三、考虑单元数组例三、考虑单元数组 B 的建立,判断下面的语句是否正确的建立,判断下面的语句是否正确例四、自己编写一个例四、自己编写一个 MATLAB 函数,是它能自动生函数,是它能自动生成一个成一个 mXm 的的 Hankel 矩阵,并使其调用格式矩阵,并使其调用格式为为 v=h1, h2, .h2n-1; H=myhankel(v); B1,1=1; B1,2=I Am A Student; B2,1=180; B2,2=100 80 75;77 60 92;67 68 90;100 89 78;33课堂优质

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号