欢迎来到天天文库
浏览记录
ID:16436662
大小:4.83 MB
页数:128页
时间:2018-08-09
《matlab基础及应用(教程全书)part2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章程序设计在前面我们已经看到,MATLAB不但可以在命令窗直接输入命令并运行,而且还可以生成自己的程序文件,这就是我们通常说的一类以M为后缀的M文件,本章我们就来研究这类文件的形成方法。M文件可分分为两大类,一是命令式M文件(也称为脚本文件,script),二是函数式M文件(function)。两类文件的区别在于:(1)命令式文件可以直接运行,函数式文件不能直接运行,只能调用。(2)命令式文件运行时没有输入输出参量,函数式文件在调用时需要进行输入输出参量设置。(3)命令式文件运行中可以调用工作空间的数据,运行中产生的所有变量为
2、全局变量。(4)函数式文件不能调用工作空间的数据,运行中产生的所有变量为局部变量。命令式文件运行中产生的所有变量为全局变量,可以调用和存储到工作空间的数据。4.1MATLAB的程序文件-M文件4.1.1脚本文件(Scripts)当我们需要在命令窗进行大量的命令集合运行时,直接从命令窗口输入比较麻烦,这时就可以将这些命令集合存放在一个脚本文件(Scripts)中,运行时只需要输入其文件名就可以自动执行这些命令集合。需要注意的是,脚本文件运行所产生的变量都驻留在MATLAB的工作空间中,同时脚本文件也可以调用工作空间中的数据。因此,脚
3、本文件所涉及的变量是全局变量。前几章所涉及到的M文件都是这类脚本文件。编辑一个脚本文件可以直接在命令窗口的左上角打开编辑窗进行编辑。4.1.2函数文件(function)函数式文件(function)的构成(1)函数定义行:Function[输出参量]=gauss(输入参量)(2):完成函数的功能。(3)函数说明。(4)函数行注。从上面构成的情况看,函数式文件实际上是完成输入参量与输出参量的转换,这样的转换是由函数文件名为gauss的文件来完成的。函数体的功能必须说明清楚输入参量与输出参量的关系。函数说明是用来解释该函数的功能的,
4、函数行注是对程序行进行说明的。上面(1)和(2)是必须的。【例4-1】分析下面函数文件。%一个数列,任意项等于前两项之和,输入项数可以给出这个数列function[a]=sul(n)ifn==1a=1;elseifn==2a=2;endb(1)=1;b(2)=2;fori=3:nb(i)=b(i-2)+b(i-1);enda=b;end该函数文件的文件名为sul.m,在第一行给出了该函数的功能,即输入项数就可以自动给出一个满足条件的数列。定义行规定了输入参数是该数列的项数,输出参数是该数列。从第三行起,是该函数的主体,主要说明了输
5、入参数与输出参数的关系。当我们在命令窗或脚本文件中调用该函数就会有结果,如>>p=sul(5)p=12358【例4-2】分析下面函数文件。%一个数列的通项公式为a(n+1)=a(n)+n^2,给定任意项的值,求这个数列的后10项,并画离散函数图function[b]=shulie(n,zhi)%zhi为初值b(1)=zhiform=1:n-1b(1+m)=b(m)+m^2endforj=n:n+9b(1+j)=b(j)+j^2endx=n:(n+9)stem(x,b(n:n+9))end如果在命令窗输入shulie(5,10)结果
6、为b=10x=567891011121314ans=Columns1through51011152440Columns6through1065101150214295Columns11through153955166608291025以及4.2程序的流程控制4.2.1循环控制1.硬循环语句(for-end)所谓硬循环是指无条件的循环,其结构为for(循环变量)。。。end【例4-3】用硬循环语句形成一个5阶对角线元素为2的矩阵。clearn=5;%每个for和if都必须对应一个endfori=1:n%i是循环变量forj=1:ni
7、fi==ja(i,j)=2;elsea(i,j)=0;endendenda结果为a=2000002000002000002000002根据结果,如果要两条主对角线元素都为2,如何调此程序?注意,硬循环语句也可用break来跳出循环。4.2.2条件控制1.条件分支语句(if-else-end)如果-那么-否则结构If条件1语句1elseif条件2语句2..else语句end注意这一结构的条件优先问题,当有多个条件时,如果条件1不满足,再判断elseif后面的条件2…,如果所有的条件都不满足,在则执行else后面的语句。【例4-5】分
8、析下面条件语句。x=input('x=?')if((x+3)<2)y=x*2;elseif(x<2)y=x^2;else(x<1)y=sqrt(x);endy运行结果x=?1.5x=1.5000y=2.25002.条件循环语句(while-end)
此文档下载收益归作者所有