MATLAB语言程序设计

上传人:hao****021 文档编号:245598856 上传时间:2024-10-09 格式:PPT 页数:33 大小:256.99KB
返回 下载 相关 举报
MATLAB语言程序设计_第1页
第1页 / 共33页
MATLAB语言程序设计_第2页
第2页 / 共33页
MATLAB语言程序设计_第3页
第3页 / 共33页
点击查看更多>>
资源描述
单击此处编辑母版样式,单击此处编辑幻灯片母版样式,第二层,第三层,第四层,第五层,*,第六讲 MATLAB 语言程序设计,6.1 MATLAB语言的函数的基本结构,6.2 全局、局部变量、子函数与私有目录,6.3 MATLAB 函数的跟踪调试,6.4 MATLAB工具箱编写技巧,6.5 MATLAB语言的程序流程语句,6.6 MATLAB中新的数据结构,6.7 MATLAB 语言编程技巧,6.8 例子与习题,6.1 MATLAB 语言函数的基本结构,MATLAB语言提供了两种源程序文件格式,M,脚本文件:,它实际上是,MATLAB,命令窗中一系列命令的组合,它没有输入输出参数传递的过程,它直接对工作区中的变量进行处理操作,M,函数:,这是,MATLAB,程序设计的主流,它可以传递参数及返回结果,我们主要介绍,M,函数的编写方法与技巧。,6.1 MATLAB 语言函数的基本结构,M函数是由 function 语句引导的,其基本格式如下,function 返回变量列表函数名(输入变量列表),由该符号引导的注释语句段,在MATLAB命令窗,中用命令,help 函数名,所得到的帮助就是这段文字。,输入、返回变量格式的检测,函数体语句,只要进入该函数,MATLAB就自动生成 nargin 和 nargout 两个变量,分别表示输入变量和输出变量的个数。程序中可以根据这两个变量的值来判断用户输入参数的情况。,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.,%See also BODEMAG,NICHOLS,NYQUIST,SIGMA,ni=nargin;,no=nargout;,.,%end bode,6.1 MATLAB 语言函数的基本结构,说明,注释符号引导的内容不能含空行,否则,后续的内容不能由,help,命令看到,大部分作者及版权信息都是空行后的注释内容。,当返回变量只有一个时,不用方框号括起来。,函数名与该函数存盘用的文件名要一样,否则,MATLAB,寻找的是文件名符合的函数,而且老版本的,MATLAB,不能用超过8个字符的函数名。,6.1 MATLAB 语言函数的基本结构,说明(续),可以用,type,函数名,来看函数文件的内容,。,可以用,edit,函数名,来查看或编辑函数文件。,为了使得,MATLAB,认识该函数,要将该函数所在的目录用,cd,命令设为当前目录,或用命令,addpath,添加到,MATLAB,的路径中去(也可以用,MATLAB,菜单下的,PATH,命令)。,6.2 全局、局部变量、子函数与私有目录,MATLAB,工作区中的变量和,M,函数内部的变量都是局部变量,他们是互不干扰的,但也可以显性地把变量定义为全局变量,使得他们在整个程序中都起作用。,全局变量定义格式为,global a b c d,注意变量之间不能用逗号分开,在,MATLAB,工作区和,M,函数内部同时要声明该变量为全局变量。,为保证函数的独立性,一般情况下不建议使用全局变量。,6.2 全局、局部变量、子函数与私有目录,从,MATLAB 5.0,开始引入子函数。所谓子函数就是一个函数文件中不但包含该函数本身,还包含专门由该函数调用的下一级函数,这样的专门函数称为子函数。子函数是不能有其他文件中的函数调用的。,私有目录即在当前的,MATLAB,目录下建立一个,private,子目录,该目录下的内容只能由当前目录下的函数调用,而不能有其他函数调用。,6.3 MATLAB函数的跟踪调试,用,MATLAB,自带的编辑器,EDIT,编辑所要跟踪调试的程序,在希望的语句上设置断点,在,MATLAB,命令窗按正常方式运行命令,程序会自动停留在所设的断点处。,调试状态下,,MATLAB,命令窗的命令提示符变为,K,。,这时可输入任何,MATLAB,命令,变量为函数内部的局部变量,而不是工作区中的变量。,调试状态下,鼠标指针指向想查询的局部变量上将立即能显示出该变量值。,6.3 MATLAB函数的跟踪调试,跟踪调试程序中,Debug,菜单下的子菜单项的功能如下表,菜单项,执行结果,Set/Clear Breakpoint,设置或清除断点,Continue,继续执行到下一个断点,Step,单步执行,Step in,单步,若该步调用函数,则在该函数中也单步执行,Exit Debug Mode,退出调试状态,6.4 MATLAB工具箱编写技巧,将为,某种专门目的编写一组,MATLAB,函数放在一个目录下,就形成了一个新的工具箱。,为了使得用户能象,MATLAB,提供的工具箱一样使用该工具箱,必须将该工具箱所在的目录用命令,addpath,添加到,MATLAB,的搜索路径中去。,为了能使得命令,help,工具箱名,能列出该工具箱的所有函数的功能介绍,应该按下述格式编写一个名为,contents.m,的文件。第一行给出工具箱名称,第二行给出版本信息,由命令,ver,工具箱名,可以获得该工具箱的版本信息。,一般在该工具箱下还有一文件,readme,.m,用来存放有关该工具箱的版本升级信息,使用命令,whatsnew,工具箱名,查看的就是该文件的信息。,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 Toolboxes.,%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.,6.5 MATLAB语言的程序流程语句,MATLAB 提供了循环语句结构、条件语句结构、开关语句结构以及试探语句。,for 循环变量=s1:s2:s3,循环体语句组,end,循环语句结构,for 循环变量=Vector,循环体语句组,end,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: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);end,6.5 MATLAB语言的程序流程语句,条件语句结构,if 条件式1,条件块语句组1,else,条件块语句组2,end,if 条件式1,条件块语句组1,elseif 条件式2,条件块语句组2,else,条件块语句组n+1,end,6.5 MATLAB语言的程序流程语句,条件语句结构,例一,if a=0,a=1;,else,a=-1;,end,例二,if a0,a=1,elseif 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_rec,student_rec=,number:1,name:Ying,height:165,test:4x3 double,6.6 MATLAB中新的数据结构,数据结构体 struct,引用成员变量,student_rec.test,ans=100 80 75,77 60 92,67 28 80,100 89 78,建立结构体类型的数组,b(50,2)=struct(student_rec),b=50 x2 struct array with fields:,number,name,height,test,6.6 MATLAB中新的数据结构,数据结构体 struct,修改结构数值元素的取值,增加结构体成员,b(43,2).number=50+43;,b(43,2).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=90,b=50 x2 struct array with fields:,number,name,height,test,weight,删除结构体成员,b=rmfield(b,weight),b=50 x2 struct array with fields:,number,name,height,test,6.6 MATLAB中新的数据结构,类 class,类不但包含成员变量,还包含成员函数,我们通过一个例子来介绍类的构造,下面建立多项式类。,首先选定一个类的名字,如多项式类我们选为,polynom,。,以这个名字在当前目录下建立一个子目录,而且要加符号,即建立子目录,polynom,。,该目录无需在,MATLAB,路径下再指定。,6.6 MATLAB中新的数据结构,polynom类的数据结构,多项式类只包含一个数据成员即 p.c,它即是多项式系数,幂次从高到底。该成员变量只能被 polynom目录下的成员函数访问。,polynom类的成员函数,构造函数,polynom,.m,多项式到双精度数的转换函数,多项式到字符串的转换函数,显示函数,A,subsref,method,重载运算符 +,-,和,*,重载函数,roots,polyval,plot,和,diff,function p=polynom(a),%POLYNOM 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);,end,6.6 MATLAB中新的数据结构,polynom类的构造函数 polynom.m,p=polynom(1 0-2-5),p=polynom object:1-by-1,6.6 MATLAB中新的数据结构,function c=double(p),%POLYNOM/DOUBLE Convert polynom object to coefficient vector.,%c=DOUBLE(p)converts a polynomial object t
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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