首页 《MAAB语言程序设计》PPT模板

《MAAB语言程序设计》PPT模板

举报
开通vip

《MAAB语言程序设计》PPT模板Itisapplicabletoworkreport,lectureandteachingMAAB语言程序设计第六讲MATLAB语言程序设计6.1MATLAB语言的函数的基本结构6.3MATLAB函数的跟踪调试6.4MATLAB工具箱编写技巧6.5MATLAB语言的程序流程语句6.6MATLAB中新的数据结构6.7MATLAB语言编程技巧6.8例子与习题6.1MATLAB语言函数的基本结构MATLAB语言提供了两种源程序文件格式M脚本文件:它实际上是MATLAB命令窗中一系列命令的组合,它没有输入输出参数传递的过程...

《MAAB语言程序设计》PPT模板
Itisapplicabletoworkreport,lectureandteachingMAAB语言程序设计第六讲MATLAB语言程序设计6.1MATLAB语言的 关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函 数的基本结构6.3MATLAB函数的跟踪调试6.4MATLAB工具箱编写技巧6.5MATLAB语言的程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 语句6.6MATLAB中新的数据结构6.7MATLAB语言编程技巧6.8例子与习题6.1MATLAB语言函数的基本结构MATLAB语言提供了两种源程序文件格式M脚本文件:它实际上是MATLAB命令窗中一系列命令的组合,它没有输入输出参数传递的过程,它直接对工作区中的变量进行处理操作M函数:这是MATLAB程序设计的主流,它可以传递参数及返回结果,我们主要介绍M函数的编写方法与技巧。6.1MATLAB语言函数的基本结构M函数是由function语句引导的,其基本格式如下function[返回变量列表]=函数名(输入变量列表)%由该符号引导的注释语句段,在MATLAB命令窗%中用命令help函数名所得到的帮助就是这段文字。输入、返回变量格式的检测函数体语句只要进入该函数,MATLAB就自动生成nargin和nargout两个变量,分别表示输入变量和输出变量的个数。程序中可以根据这两个变量的值来判断用户输入参数的情况。6.1MATLAB语言函数的基本结构M函数典型例子function[magout,phase,w]=bode(a,b,c,d,iu,w)%BODEBodefrequencyresponseofLTImodels.%BODE(SYS)drawstheBodeplotoftheLTImodelSYS(createdwith%eitherTF,ZPK,SS,orFRD).Thefrequencyrangeandnumberof%pointsarechosenautomatically.%SeealsoBODEMAG,NICHOLS,NYQUIST,SIGMAni=nargin;no=nargout;……………………….%endbode6.1MATLAB语言函数的基本结构说明注释符号%引导的内容不能含空行,否则,后续的内容不能由help命令看到,大部分作者及版权信息都是空行后的注释内容。当返回变量只有一个时,不用方框号[]括起来。函数名与该函数存盘用的文件名要一样,否则MATLAB寻找的是文件名符合的函数,而且老版本的MATLAB不能用超过8个字符的函数名。6.1MATLAB语言函数的基本结构说明(续)可以用type函数名来看函数文件的内容。可以用edit函数名来查看或编辑函数文件。为了使得MATLAB认识该函数,要将该函数所在的目录用cd命令设为当前目录,或用命令addpath添加到MATLAB的路径中去(也可以用MATLAB菜单下的PATH命令)。6.2全局、局部变量、子函数与私有目录MATLAB工作区中的变量和M函数内部的变量都是局部变量,他们是互不干扰的,但也可以显性地把变量定义为全局变量,使得他们在整个程序中都起作用。全局变量定义格式为globalabcd注意变量之间不能用逗号分开,在MATLAB工作区和M函数内部同时要声明该变量为全局变量。为保证函数的独立性,一般情况下不建议使用全局变量。6.2全局、局部变量、子函数与私有目录从MATLAB5.0开始引入子函数。所谓子函数就是一个函数文件中不但包含该函数本身,还包含专门由该函数调用的下一级函数,这样的专门函数称为子函数。子函数是不能有其他文件中的函数调用的。私有目录即在当前的MATLAB目录下建立一个private子目录,该目录下的内容只能由当前目录下的函数调用,而不能有其他函数调用。6.3MATLAB函数的跟踪调试用MATLAB自带的编辑器EDIT编辑所要跟踪调试的程序,在希望的语句上设置断点,在MATLAB命令窗按正常方式运行命令,程序会自动停留在所设的断点处。调试状态下,MATLAB命令窗的命令提示符变为K>>。这时可输入任何MATLAB命令,变量为函数内部的局部变量,而不是工作区中的变量。调试状态下,鼠标指针指向想查询的局部变量上将立即能显示出该变量值。6.3MATLAB函数的跟踪调试跟踪调试程序中Debug菜单下的子菜单项的功能如下表菜单项执行结果Set/ClearBreakpoint设置或清除断点Continue继续执行到下一个断点Step单步执行Stepin单步,若该步调用函数,则在该函数中也单步执行ExitDebugMode退出调试状态6.4MATLAB工具箱编写技巧将为某种专门目的编写一组MATLAB函数放在一个目录下,就形成了一个新的工具箱。为了使得用户能象MATLAB提供的工具箱一样使用该工具箱,必须将该工具箱所在的目录用命令addpath添加到MATLAB的搜索路径中去。为了能使得命令help工具箱名能列出该工具箱的所有函数的功能介绍,应该按下述格式编写一个名为contents.m的文件。第一行给出工具箱名称,第二行给出版本信息,由命令ver工具箱名可以获得该工具箱的版本信息。一般在该工具箱下还有一文件readme.m用来存放有关该工具箱的版本升级信息,使用命令whatsnew工具箱名查看的就是该文件的信息。6.4MATLAB工具箱编写技巧>>typecontents.m%SymbolicMathToolbox.%Version2.1.2(R12.1)11-Sep-2000%NewFeatures.%Readme-Overviewofthenewfeaturesin/changesmadeto%theSymbolicandExtendedSymbolicMathToolboxes.%Calculus.%diff-Differentiate.%LinearAlgebra.%poly-Characteristicpolynomial.%Simplification.%simplify-Simplify.%SolutionofEquations.%solve-Symbolicsolutionofalgebraicequations.%VariablePrecisionArithmetic.%vpa-Variableprecisionarithmetic.6.5MATLAB语言的程序流程语句MATLAB提供了循环语句结构、条件语句结构、开关语句结构以及试探语句。for循环变量=s1:s2:s3循环体语句组end循环语句结构for循环变量=Vector循环体语句组end6.5MATLAB语言的程序流程语句例一、t=0;fori=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=[01;-1–2];b=[0;1];c=[12];d=0;m=[];I=eye(size(A));fori=w,m=[m;C*inv(sqrt(-1)*I*I-A)*B+D);end6.5MATLAB语言的程序流程语句条件语句结构if条件式1条件块语句组1else条件块语句组2endif条件式1条件块语句组1elseif条件式2条件块语句组2……else条件块语句组n+1end6.5MATLAB语言的程序流程语句条件语句结构例一ifa>=0a=1;elsea=-1;end例二ifa>0a=1elseifa<0a=-1elsea=0end6.5MATLAB语言的程序流程语句开关结构switch开关表达式case表达式1语句段1case{表达式2,表达式3,…,表达式m}语句段2……otherwise语句段nend6.6MATLAB中新的数据结构数据结构体struct从5.0版本开始,MATLAB提供了几种新的数据结构类型,他们是数据结构体struct,类class和单元结构cell。与C语言不同,MATLAB中数据结构类型的变量不用定义一个结构体先,直接用就可以,如下例。>>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:1name:'Ying'height:165test:[4x3double]6.6MATLAB中新的数据结构数据结构体struct引用成员变量>>student_rec.testans=10080757760926728801008978建立结构体类型的数组>>b(50,2)=struct(student_rec)b=50x2structarraywithfields:numbernameheighttest6.6MATLAB中新的数据结构数据结构体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=90b=50x2structarraywithfields:numbernameheighttestweight删除结构体成员>>b=rmfield(b,'weight')b=50x2structarraywithfields:numbernameheighttest6.6MATLAB中新的数据结构类class类不但包含成员变量,还包含成员函数,我们通过一个例子来介绍类的构造,下面建立多项式类。首先选定一个类的名字,如多项式类我们选为polynom。以这个名字在当前目录下建立一个子目录,而且要加符号@,即建立子目录@polynom。该目录无需在MATLAB路径下再指定。6.6MATLAB中新的数据结构polynom类的数据结构多项式类只包含一个数据成员即p.c,它即是多项式系数,幂次从高到底。该成员变量只能被@polynom目录下的成员函数访问。polynom类的成员函数构造函数polynom.m多项式到双精度数的转换函数多项式到字符串的转换函数显示函数Asubsrefmethod重载运算符+,-,和*重载函数roots,polyval,plot,和difffunctionp=polynom(a)%POLYNOMPolynomialclassconstructor.%p=POLYNOM(v)createsapolynomialobjectfromthevectorv,%containingthecoefficientsofdescendingpowersofx.ifnargin==0p.c=[];p=class(p,'polynom');elseifisa(a,'polynom')p=a;elsep.c=a(:).';p=class(p,'polynom');end6.6MATLAB中新的数据结构polynom类的构造函数polynom.m>>p=polynom([10-2-5])p=polynomobject:1-by-16.6MATLAB中新的数据结构functionc=double(p)%POLYNOM/DOUBLEConvertpolynomobjecttocoefficientvector.%c=DOUBLE(p)convertsapolynomialobjecttothevectorc%containingthecoefficientsofdescendingpowersofx.c=p.c;polynom类的转换函数double.mfunctiondisplay(p)%POLYNOM/DISPLAYCommandwindowdisplayofapolynomdisp('');disp([inputname(1),'='])disp('');disp([''char(p)])disp('');polynom类的显示函数display.m>>double(p)ans=10-2-5>>display(p)p=x^3-2*x-56.6MATLAB中新的数据结构functionr=plus(p,q)%POLYNOM/PLUSImplementp+qforpolynoms.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.mfunctionr=mtimes(p,q)%POLYNOM/MTIMESImplementp*qforpolynoms.p=polynom(p);q=polynom(q);r=polynom(conv(p.c,q.c));polynom类重载*运算符mtimes.m6.6MATLAB中新的数据结构单元结构cell单元结构类似于数组,但单元结构中各元素可以是不同属性的数据,见下例。访问单元数据要用带有大括号下标的形式,不能用圆括号。可以使用celldisp函数来直接显示整个单元。删除第n个单元元素用下面命令:a(n)=[];注意用圆括号。>>a={1,'Ying',180,magic(3)}a=[1]'Ying'[180][3x3double]>>a{4}ans=8163574926.6MATLAB中新的数据结构单元结构cell应用varargin表示输入变量列表,是一个单元结构变量varargout表示输出变量列表,是一个单元结构变量functiona=convs(varargin)a=varargin{1};fori=2:length(varargin)a=conv(a,varargin{i});end>>p=[12405];q=[12];f=[123];>>g=convs(p,q,f,[11],[13],[14]);g=11156176376578678648527315906.7MATLAB语言编程技巧MATLAB运行机制MATLAB语言在函数调用中或文件执行时,如果遇到了某一个名字,则按照下面的优先级顺序对这个名字进行判定。判定这个名字是否为变量名判定这个名字是否为本函数内部的子函数判定这个名字是否为本目录下的私有目录内函数判定这个名字是否为MATLAB的内在函数名判定这个名字是否为MATLAB路径下的Mex型文件判定这个名字是否为MATLAB路径下的M函数MATLAB搜索路径的顺序是按照其路径设定文件pathdef.m中的先后次序来进行的。6.7MATLAB语言编程技巧MATLAB运行机制用户可以用命令exist来查询当前的工作区下是否存在一个名字,其调用格式为: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工作路径下存在伪代码文件A.pi=7,则表示MATLAB工作路径下存在一个A子目录i=0,则表示不存在任何和A有关的变量和文件6.7MATLAB语言编程技巧测定程序执行时间和时间分配tic和toc是启动和停止秒表,cputime获取CPU时间>>tic,t=cputime;a=hilb(1000);toc,cputime-telapsed_time=0.7030ans=0.7500M函数耗时剖析命令profilepro待测函数名propro6.7MATLAB语言编程技巧加快MALTAB程序执行速度的建议尽量避免使用循环多重循环情况下,外循环次数要少大型矩阵要预先定维优先考虑内在函数采用有效的算法应用Mex技术6.8例子与习题例一、分别用for和while循环结构编写程序,写出并考虑一种避免循环的简洁方法来进行求和,并比较各种算法的运行时间。例二、用循环语句形成一个有20个分量的数组,使其元素满足Fibonacci规则。6.8例子与习题例三、考虑单元数组B的建立,判断下面的语句是否正确例四、自己编写一个MATLAB函数,是它能自动生成一个mXm的Hankel矩阵,并使其调用格式为v=[h1,h2,….h2n-1];H=myhankel(v);>>B{1,1}=1;>>B{1,2}='IAmAStudent';>>B{2,1}=180;>>B{2,2}=[1008075;776092;676890;1008978];演讲结束,谢谢大家支持
本文档为【《MAAB语言程序设计》PPT模板】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
满君
做一名优秀的教师
格式:ppt
大小:2MB
软件:PowerPoint
页数:0
分类:企业经营
上传时间:2021-10-17
浏览量:0