资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,MATLAB 7.0,从入门到精通,1,主要讲述内容,第,1,章,MATLAB,简介,第,2,章 数值运算,第,3,章 单元数组和结构,第,4,章 字符串,第,5,章 符号运算,第,6,章,MATLAB,绘图基础,第,7,章 程序设计,第,8,章 计算方法的,MATLAB,实现,第,9,章 优化设计,第,10,章,Simulink,仿真初探,2,第,7,章 程序设计,MATLAB,作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵运算的能力和丰富的绘图功能,还可以像,C,语言、,FORTRAN,等计算机高级语言一样进行程序设计,编写扩展名为,.m,的,M,文件,实现各种复杂的运算,同时,MATLAB,自带的许多函数就是,M,文件函数,用户也可以利用,M,文件来生成和扩充自己的函数库。,3,7.1,脚本和函数,所谓,M,文件,简单来说就是用户把要实现的命令写在一个以,.m,作为扩展名的文件中,然后由,MATLAB,系统进行解释,最后运行出结果。,M,文件有函数和脚本两种格式。两者只是在语法和使用上有些不同。脚本式,M,文件没有输入参数或输出参数,而函数式,M,文件有输入参数和输出参数;函数可以有零个或多个输入或输出变量。,4,7.1.1,脚本,脚本是一个扩展名为,.m,的文件,其中包含了,MATLAB,的各种命令,与批处理文件很类似,在,MATLAB,命令窗口下直接输入此文件的主文件名,,MATLAB,可逐一执行在此文件内的所有命令,和在命令窗口逐行输入这些命令一样。脚本式,M,文件运行产生的所有变量都是全局变量,运行脚本后,所产生的所有变量都驻留在,MATLAB,基本工作空间,只要用户不使用,clear,命令加以清除,且,MATLAB,指令窗口不关闭,这些变量将一直保存。基本空间随,MATLAB,的启动而产生,在关闭,MATLAB,软件时该基本空间被删除。,例:,huitu0,5,6,7.1.2,函数,MATLAB,中许多常用的函数都是函数式,M,文件,使用时,,MATLAB,获取传递给它的变量,利用操作系统所给的输入,运算得到要求的结果,然后返回这些结果。函数文件类似于一个黑箱,由函数执行的命令以及这些命令所创建的中间变量都是隐含的。运算过程中的中间变量都是局部变量,(,除特别声明外,),,存放在函数本身的工作空间内,不会和,MATLAB,基本工作空间的变量相互覆盖,对用户来说,可见的只是输入和输出,因此易于使程序模块化,特别适合于大型程序代码。,例:,huitu,7,8,7.2 M,文件的程序结构,一般来讲,决定程序结构的语句可分为顺序语句、循环语句和分支语句三种。,1,、顺序语句,顺序语句就是依次顺序执行程序的各条语句,这种语句不需要任何特殊的流程控制。,例:,jizhi.m,9,10,2,、循环语句,(1)for,循环,for,循环变量,=,数组,循环体;,end,例:,for1,,,specmat(n),11,(2)while,循环,while,表达式,循环体;,n+1,end,例:,while1,12,例:,for2,和,while2,13,while2,Enter the first value:1,Enter the first value:3,Enter the first value:5,Enter the first value:7,Enter the first value:9,Enter the first value:0,Enter the first value:-1,The mean of this data set is:4.166667,The standard deviation is:3.488075,The number of data is:6,14,for2,Enter the number of the points:6,Enter the value:1,Enter the value:3,Enter the value:5,Enter the value:7,Enter the value:9,Enter the value:0,The mean of this data set is:4.166667,The standard deviation is:3.488075,The number of data is:6,15,3,、条件语句,(1)if-else-end,if,条件式,1,表达式,1,;,elseif,条件式,2,表达式,2,;,.,else,表达式,n,;,end,例:,ff,。可用,plot(x,ff(x),绘分段函数图。,16,x1=-2:0.01:0;,x2=0.5:0.01:5;,x3=5.01:0.01:10;,x4=10.01:0.01:12;,plot(x1,ff(x1),hold on,plot(x2,ff(x2),hold on,plot(x3,ff(x3),hold on,plot(x4,ff(x4),grid on,17,18,(2)switch-case-otherwise,swith expression,case value1,statements1,;,.,case valuen,statementsn,;,otherwise,statements,;,end,例:,fm,19,综合实例,仿真小球轨迹。题目要求如下,程序为,ball.m,。,20,ball,Enter the initial velocity:20,Range versus angle theta:,0 0.0000,5 7.0732,10 13.9316,15 20.3666,20 26.1828,25 31.2034,30 35.2760,35 38.2767,40 40.1144,45 40.7332,50 40.1144,55 38.2767,60 35.2760,65 31.2034,70 26.1828,75 20.3666,80 13.9316,85 7.0732,90 0.0000,Max ranges is 40.7332 at 45 degrees.,21,22,ball,Enter the initial velocity:40,Range versus angle theta:,0 0.0000,5 28.2930,10 55.7263,15 81.4664,20 104.7312,25 124.8138,30 141.1039,35 153.1067,40 160.4575,45 162.9328,50 160.4575,55 153.1067,60 141.1039,65 124.8138,70 104.7312,75 81.4664,80 55.7263,85 28.2930,90 0.0000,Max ranges is 162.9328 at 45 degrees.,23,24,7.3,程序流控制,1,、,continue,命令的作用是结束本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。,(,当条件满足时,,continue,语句才被调用,跳出后面的语句,循环继续,条件不满足则继续执行后面的程序。,),例:,continue1,、,continue11,25,2,、,break,命令的作用是终止本次循环,跳出最内层循环,即不必等到循环的结束而是根据条件退出循环,用法与,continue,类似,常常和条件语句合用来强制终止循环。,(,当条件满足时,,break,语句才被调用,系统将在循环尚未结束时跳出当前循环,条件不满足则继续执行后面的程序。,),例:,break1,、,jitu,26,3,、,return,命令可使正常运行的函数正常退出,并返回调用它的函数继续运行,经常用于函数的末尾以正常结束函数的运行,也可用在某条件满足时强行结束执行该函数。,例:,dreturn,27,4,、,echo,命令能实现,M,文件在执行过程中每条命令的显示。,脚本文件:,echo on,显示其后执行的文件指令,echo off,不显示其后执行的文件指令,函数文件:,echo filename on,使,filename,指定的,M,文件执行的命令显示出来,echo filename off,使,filename,指定的,M,文件执行的命令不显示出来,echo on all,其后所有,M,文件执行的命令显示出来,echo off all,其后所有,M,文件执行的命令不显示出来,28,5,、,error,指令用来指示出错信息并终止当前函数的运行。,error(,message,),类似的是,warning,,区别是,warning,之后程序继续运行。,29,6,、,try,.catch,与,error,类似,用于对异常情况处理,try,(commands1),catch,(commands2),end,组命令,1,总被执行,当执行出现错误时,,catch,控制块就可捕获它,执行组命令,2,,针对不同错误类型进行不同的处理。可用,lasterr,函数查询出错原因。,30,例:,chucuo,执行结果:,a_end=,4 9 2,ans=,Attempted to access a(4,:);index out of bounds because size(a)=3,3.,注意,try,和,catch,控制块中的语句之间用逗号隔开。,31,7,、,input,命令用来提示用户从键盘输入数据、字符串或表达式,并接受输入值。,r=input(,prompt,),在屏幕上显示提示信息,prompt,,等待用户输入,并将值赋给,r,,直接回车则输出空矩阵。,r=input(,prompt,s,),返回的字符串作为文本变量而不作为变量名或者数值。,例:,test,32,8,、,pause,命令用于暂时终止程序的运行,等待用户按任意键继续进行。,pause,暂停,M,文件的执行,按任意键继续,pause(n),终止程序,n,秒,,n,是任意实数,pause on,允许后面的,pause,命令起作用,pause off,使后面的,pause,命令不起作用,例:,pause1,33,7.4,脚本文件,脚本文件只是逐条的解释文件中的程序条,与命令窗口直接输入一样,只是它具有了存储能力,且可以方便的多次运行该程序段,在命令窗口中只需输入存储的文件名即可,且存储的文件名没有特殊要求。脚本文件中可以调用函数,只需调用函数名即可。,例:,zitu,、,quzhi,、,xunzhi,、,duozhou,、,jiemyfun,。,34,7.5,函数文件,函数的格式必须加,function,,并且,M,文件的存储名必须与函数名相同。一般函数都有输入和输出。,例:,sintu,、,fenduan1,。,35,
展开阅读全文