




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
matlab程序设计,简介M文件介绍建立自己的函数库变量及其作用域控制语句程序调试数据的输入输出matlab的编程技巧,1.简介,Matlab既是一种语言,又是一种编程环境。Matlab提供了很多方便用户的工具,用于管理变量、输入输出数据以及生成和管理M文件。用户可在Matlab的命令窗口键入一个命令,也可以由它定义的语言在编辑器中编写应用程序,Matlab软件对此进行解释后,在Matlab环境下对它进行处理,最后返回结果.,Matlab的编程效率要比其它高级语言Basic、Fortran、Pascal、C高,且语言简单可读性强、调试容易、调用方便、易于维护。包括有:a.M文件b.函数c.绘图其语法与C语言极为类似。,MATLAB语言的显著特点1、具有强大的矩阵运算能力:MatrixLaboratory(矩阵实验室),使得矩阵运算非常简单。2、是一种演算式语言MATLAB的基本数据单元是既不需要指定维数,也不需要说明数据类型的矩阵(向量和标量为矩阵的特例),而且数学表达式和运算规则与通常的习惯相同。因此MATLAB语言编程简单,使用方便。,赋值语句结构a、直接赋值语句赋值变量=赋值表达式b、函数调用语句返回变量列表=函数名(输入变量列表),字符串要用单引号并用括号括在里面。如:disp(textstring)disp字符串显示命令textstring,字符串及其宏命令,在单引号里边的字符串可以作为矢量或矩阵的元素。使用disp命令或输入变量名就可以显示它们表示的字符串。如:a=thisisa;textstring?Allrowsinthebracketedexpressionmusthavethesamenumberofcolumns.(元素1含9个字符,包括空格;元素2含有11个字符;因此只要在元素1中加入2个空格即可解决问题)aa=thisisa;textstringdisp(aa)aa=aa=thisisathisisatextstringtextstring,宏是MATLAB语言用在常用命令部分的缩写。它可以被存储用于建立M文件的一部分。宏命令采用字符串,并使用eval命令去执行宏命令。下例是采用宏命令计算阶乘的例子。fct=prod(1:n);求10的阶乘n=10;eval(fct)ans=3628800,常用的编程命令,pause:停止m文件的执行直至有键按下。pause(n)将使程序暂停n秒。echoon/off:控制是否在屏幕上显示程序语句内容。keyboard:停止程序执行,把控制权交给键盘。输入return并回车后继续程序执行。x=input(prompt):把输入的字符串作为提示符,等待使用者输入一个响应,然后把它赋值到x。,MATLAB的运算符有三种类型:算术运算符、关系运算符、逻辑运算符。它们的处理顺序依次为算术运算符、关系运算符、逻辑运算符。在前面我们已经介绍例算术运算符,这里我们着重介绍后两种运算符。,关系与逻辑运算符,1、关系运算符假设有:A=12-1-5B=0231大于ABans=1000A1ans=0100=大于等于A=Bans=1100=等于A=Bans=0100;A=1ans=1000=不等于A=Bans=1011;A=1ans=0111,非A=00101=0,2、逻辑运算符,注意:在处理逻辑运算时,运算元只有两个值即0和1,所以如果指定的数为0,MATLAB认为其为0,而任何数不等于0,则认为是1。,设有:A=5-40-0.5B=0109,mn=scale(n,cy);mm=mm;mn=mn;ma=sim(net,mm)ma=ma;maa=rescale(ma,cy);prerelerror=(maa-n)./n;premrerror=sum(abs(prerelerror)./9,2.M文件介绍,1.M文件Matlab有两种常用的方式:第一种方式,在命令窗口中直接键入命令,同时可看到运算结果.第二种方式,指用户采用任何文字处理软件编写和修改一个ASCII码文件,其扩展名必须为.m。2函数Matlab由包括许多标准函数,每个函数都完成某一特定功能的代码组成。Matlab也允许用户编写自己所需的函数,其扩展名为.m,其中必须以关键字function开头.,2、程序文件以.m格式进行存取,包含一连串的MATLAB指令和必要的注解。需要在工作空间中创建并获取变量,也就是说处理的数据为命令窗口中的数据,没有输入参数,也不会返回参数。程序运行时只需在工作空间中键入其名称即可。,三、MATLAB的程序类型,MATLAB的程序类型有三种,一种是在命令窗口下执行的脚本M文件;另外一种是可以存取的M文件,也即程序文件;最后一种是函数(function)文件。,1、脚本M文件在命令窗口中输入并执行,它所用的变量都要在工作空间中获取,不需要输入输出参数的调用,退出MATLAB后就释放了。,(1)函数定义行(关键字function)functionout1,out2,.=filename(in1,in2,.)输入和输出(返回)的参数个数分别由nargin和nargout两个MATLAB保留的变量来给出。(2)第一行帮助行,即H1行以(%)开头,作为lookfor指令搜索的行,3、函数文件,与在命令窗口中输入命令一样,函数接受输入参数,然后执行并输出结果。用help命令可以显示它的注释说明。文件名必须与函数名一致。具有标准的基本结构。,(3)函数体说明及有关注解以(%)开头,用以说明函数的作用及有关内容(4)函数体语句函数体内使用的除返回和输入变量这些在function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。,functionmcx,mx=mncn(x)%meancentersmatrixxandreturnsavectorofmeans(mx)%usedinthescaling.I/Oformatis:%mcx,mx=mncn(x);%Copyright%BarryM.Wise%1991m,n=size(x);mx=mean(x);mcx=zeros(m,n);fori=1:mmcx(i,:)=(x(i,:)-mx);end,将数据矩阵进行中心化,3.建立自己的函数库,文件与路径管理what:显示当前目录下所有与matlab相关的文件及它们的路径。dir:显示当前目录下所有的文件which:显示某个文件的路径cd.:返回上一级目录cd:显示当前目录typefilename:在命令窗口中显示文件filenamedeletefilename:删除文件filenamepath得到matlab的所有搜索路径editpath进行编辑路径,扩展matlab路径,建立自己的函数库建立自己的工作目录,如:D:matlabmyfiles单击命令窗口中的菜单项:filesetpath在setpath对话框中点击addfolder,找到或输入自己刚才新建的目录,确定即可。这样,就把新建的目录加入到matlab的搜索路径中,路径中的文件可以自己在命令窗口运行,并可以调用matlab环境中的其它函数。,4.变量及其作用域,Matlab中预定义常量Ans分配最新计算表达式的值,这个表达式并没有给定一个名字Eps返回机器精度(2.2204*10e-16)Realmax返回计算机能处理的最大浮点数Realmin返回计算机能处理的最小的非零浮点数Pi,3.14159265Inf定义为1/0。当出现被零除时,Matlab就返回inf,并不中断执行而继续计算NaN定义为“NotaNumber”,这个非数值要么是类型,要么是inf/inf尽量避免对这些量重新赋值,MATLAB中的数据类型变量:double.一般为矩阵、多维数组等char.字符串变量和矩阵sparse.稀疏矩阵struct.结构体型cell.单元型变量类和对象,变量的命名规则变量名对大小写敏感每个变量名最多可包含19个字符变量名的首字符必须是字母,全局变量、子函数、私有函数global全局变量列表如果一个函数内的变量没有特别声明,那么这个变量只在函数内部使用,即为局部变量。如果两个或多个函数共用一个变量(或者说在子程序中也要用到主程序中的变量,注意不是参数),那么可以用global来将它声明为全局变量。全局变量的使用可以减少参数传递,合理利用全局变量可以提高程序执行的效率各变量名不能用逗号分隔,用空格,否则不能识别。同时在MATLAB工作空间申明、在函数前面申请子函数在函数中专门有该函数调用的下一级函数私有目录当前目录下建一个private子目录只能由当前目录下的函数调用,MATLAB函数内的特殊变量nargin、nargout分别等于函数的实际输入输出的个数varargin、varargoutfunctionvarargout=f_name(varargin)表示可以有任意多的输入和输出变量,5.控制语句,流程控制语句条件分支语句if.end循环语句for.end,while.end开关语句switch.case.end,步长缺省值为1,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束。循环结构可以嵌套使用。书写格式不必太过于拘泥,在Editor编辑器中会自动进行处理。,1、for循环语句基本格式for循环变量起始值:步长:终止值循环体end,fori=1:3forj=1:3a(i,j)=1/(i+j-1);endendaa=1.00000.50000.33330.50000.33330.25000.33330.25000.2000,2、while循环语句基本格式while表达式循环体end,若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。,While循环和for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的。,n=1;whileprod(1:n)nn=70,求阶乘大于10100的最小整数,3、if,else,elseif语句(1)if逻辑表达式执行语句end,当逻辑表达式的值为真时,执行该结构中的执行语句,执行完之后继续向下进行;若为假,则跳过结构中的内容,向下执行。,(2)if逻辑表达式(3)if逻辑表达式1执行语句1执行语句1elseelseif逻辑表达式2执行语句2执行语句2endend,if-else的执行方式为:如果逻辑表达式的值为真,则执行语句1,然后跳过语句2,向下执行;如果为假,则执行语句2,然后向下执行。if-elseif的执行方式为:如果逻辑表达式1的值为真,则执行语句1;如果为假,则判断逻辑表达式2,如果为真,则执行语句2,否则向下执行。,functionf=pdbsline(x)ifx0f=0;elseifx1f=x;elsex2f=2-x;elsef=0;end,4、switch语句格式:switch表达式(可以是标量或字符串)case值1语句1case值2语句2.otherwise语句nend,执行方式:表达式的值和哪种情况(case)的值相同,就执行哪种情况中的语句,如果不同,则执行otherwise中的语句。格式中也可以不包括otherwise,这时如果表达式的值与列出的各种情况都不相同,则继续向下执行。,5、break中断命令,可以中断break语句所在的最内层循环的执行,也可以用来中断条件语句,直接跳到后面执行。,switchlower(METHOD)caselinear,bilinear,disp(Methodislinear)casecubic,disp(Methodiscubic)casenearestdisp(Methodisnearest)otherwise,disp(Unknownmethod)end,a=0;fori=1:10a=a+i;if(i=5)break;endend,6.程序调试,M文件错误的种类语法错误:发生在程序代码的解释过程中,一般由函数参数输入类型有误或矩阵运算阶数不符等引起执行错误:发生在程序运行过程中,出现溢出或死循环等,与程序本身有关。一般应在设计程序过程中避免出现NaN、Inf或空矩阵等。警告一般不影响程序的执行,提示某些不合理或过时的用法,一般可以不予理会,要关闭警告可输入命令warningoff。,错误的识别与程序调试语法错误可根据提供的相应错误信息改正。执行错误的识别:让程序中关键部分语句的执行结果在命令窗口显示出来,可将程序中这部分语句后面的分号去掉使用keyboard,在容易出错的地方插入这个命令,程序运行到这里后会停下来,以利于检查。检查无误后输入return继续下面的执行。将函数头注释掉,使其变成脚本文件,函数内部变量也相应变成工作空间的变量,可以直接查看使用调试菜单或者调试函数,文件窗口中的debug菜单和breakpoint菜单。,7.数据的输入输出,数据的输入在matlab命令窗口直接输入数据(出错后不易修改)利用M文件产生数据:编辑一个包含数据的M文件从ACSII码文件加载数据:要求行间有回车符,数据间有空格,用load命令导入,自动存入与文件名同名的变量中。命令窗口菜单:fileimportdata。通过与其它软件工具的接口输入数据,数据的输出dairy、diaryoff命令窗口中输入diary后将记录下以后所有命令窗口的内容,存入相应文本文件中,知道出现diaryoff命令。save将当前matlab变量空间的几个或全部变量存入指定的。mat文件中,该文件可在命令窗口fileopen,8.matlab的编程技巧,测定程序执行时间和时间分配tic,toc是启动秒表和停止秒表的命令cputime用来获取cpu时间,MATLBA程序的基本设计原则1、后面的内容是程序的注解,要善于运用注解使程序更具可读性。2、养成在主程序开头用clear指令清除变量的习惯,以消除工作空间中其他变量对程序运行的影响。但注意在子程序中不要用clear。3、参数值要集中放在程序的开始部分,以便维护。要充分利用MATLAB工具箱提供的指令来执行所要进行的运算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届惠州市实验中学高一化学第一学期期中复习检测试题含解析
- 护理学的基本理论
- 2025年学历类自考专业(小学教育)中外教育简史-科学.技术.社会参考题库含答案解析(5套)
- 2025年学历类自考专业(学前教育)幼儿园课程-学前儿童数学教育参考题库含答案解析(5套)
- 月嫂培训知识生理性黄疸课件
- 内蒙古翁牛特旗乌丹二中2026届化学高二第一学期期末综合测试模拟试题含答案
- 第16课 神秘的蜜蜂王国说课稿-2025-2026学年小学信息技术(信息科技)四年级冀教版
- 6.荷塘月色教学设计-2025-2026学年高中语文必修一鲁教版
- (2025年标准)海域使用协议书
- 2.1 简谐运动 教学设计-2024-2025学年高二上学期物理人教版(2019)选择性必修第一册
- 长沙市名校小升初分班考试数学试卷(含答案)
- 肺动脉栓塞护理查房
- 学院 军训协议书
- 农村房地产转让合同协议
- 拉链专业工艺讲解
- 快速康复在泌尿外科的应用
- 2025版抵押贷款抵押物抵押权登记及变更手续协议模板
- (标准)按摩店转让合同协议书
- 《死亡医学证明(推断)书》培训试题(附答案)
- 护理核心制度2025年
- 膀胱灌注的护理课件
评论
0/150
提交评论