matlab基本语句1.循环语句forfori=s1:s3:s2循环语句组end解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。例:求1到100的和,可以编程如下:sum=0fori=1:1:100sum=sum+iend这个程序也可以用while语句编程。注:for循环可以通过break语句结束整个for循环.2.循环语句while例:sum=0;i=1;while(i=100)sum=sum+i;i=i+1;end3.if语句if(条件)语句endif(条件)语句else语句endif(条件)语句elseif语句end4.关系表达式:=,,,=,=,==(精确等于)5.逻辑表达式:|(或),&(且)6.[n,m]=size(A)(A为矩阵)这样可以得到矩阵A的行和列数n=length(A),可以得到向量A的分量个数;如果是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。7.!后面接Dos命令可以调用运行一个dos程序。8.常见函数:poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如a=[1,0,0;0,2,0;0,0,3],则poly(a)=1-611-6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。compan():可以求矩阵的伴随矩阵.sin()等三角函数。MATLAB在数学建模中的应用(3)一、程序设计概述MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。MATLAB编程环境有很多。常用的有:1.命令窗口2.word窗口3.M-文件编辑器,这是最好的编程环境。M-文件的扩展名为“.m”。M-文件的格式分为两种:①lM-脚本文件,也可称为“命令文件”。②M-函数文件。这是matlab程序设计的主流。l保存后的文件可以随时调用。二、MATLAB程序结构按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。1顺序结构顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行程序模块1,然后执行程序模块2。实现顺序结构的方法非常简单,只需将程序语句顺序排列即可。2选择结构在MATLAB中,选择结构可由两种语句来实现。(1)if语句if语句的最简单用法为:if表达式;程序模块;endif语句的另一种用法为:if表达式程序模块1else程序模块2end例1使用if语句判断学生的成绩是否及格。程序:clearn=input(’输入n=’)m=60;ifn<m,r=’不及格’elser=’及格’end练习一:将例1写入M-文件编辑器,然后在commandwindow调用这个程序。当针对多个条件进行选择时,可以采用下面的格式:if表达式1程序模块1elseif表达式2程序模块2…………elseif表达式n程序模块nelse程序模块n+1end例2将百分之的学生成绩转换为五分制输出。程序:clearn=input(’输入n=’)ifn=90chji=’优秀’elseifn=80chji=’良好’elseifn=70chji=’中等’elseifn=60chji=’及格’elsechji=’不及格’end练习二:将例2写入M-文件编辑器,然后在commandwindow调用这个程序。(2)switch语句switch语句可以替代多分支的if语句,而且switch语句简洁明了,可读性更好。其格式为:switch表达式case数值1程序模块1case数值2程序模块2……otherwise程序模块nend其中的otherwise模块可以省略。switch语句的执行过程是:首先计算表达式的值,然后将其结果与每一个case后面的数值依次进行比较,如果相等,则执行该case的程序模块;如果都不相等,则执行otherwise模块中的语句。如图3所示。例3用switch…case开关结构将百分制的学生成绩转换为五分制的成绩输出。程序:clearx=58switchfix(x/10)case{10,9}y=’优秀’case8y=’良好’case7y=’中等’case6y=’及格’otherwisey=’不及格’end练习三:将例3写入M-文件编辑器,然后在commandwindow调用这个程序。3循环结构循环结构的流程图如图4所示它可以多次重复执行某一组语句。循环是计算机解决问题的主要手段。在MATLAB中,循环结构可以由两种语句结构实现。(1)for…end循环结构。其格式为:fori=V,循环体结构,end其中V为一个行向量,循环变量i每次从V中取一个数值,执行一次循环体的内容,如此下去,直到完成V中的所有分量,就自动结束循环体的执行。例4计算s=12+22+52。程序:a=[125];s=0;fork=a,s=s+k^2;end,s,该例题只是为了说明for语句的格式,事实上,用下面的语句求和更为简单。命令:p=sum(a.^2)练习四:建立MATLAB与word的连接,在新建的m-book中写入上面的程序,并用notebook菜单运行之。循环结构里面还可以包含循环结构,形成多重循环。例5设计一个九九乘法表。程序:clearfori=1:9forj=1:9a(i,j)=i*j;endenda,练习五:①直接在命令窗编写上面的程序。②试运行下面的程序,并加以分析:程序:disp(’九九乘法表’),fori=1:9,forj=1:i,p{i}(j)=j*i;end,disp(p{i}),end(2)while…end循环结构。其格式为:while(表达式)循环结构体end例6求MATLAB的相对精度解:解题的思路是,让y值不断减小,直到MATLAB分不出1+y与1的差别为止。程序:y=1;while1+y1;y1=y;y=y/2;end,y1说明:①for循环与while循环的区别是,for语句的循环次数是确定的,而while语句的循环次数是不确定的。②一定要注意在循环结构体内设置“修改条件表达式的语句”,以免进入“死循环”。③一旦出现死循环,在命令窗用ctrl+c可使程序中止。④注意程序的可读性。练习六:在M-文件编辑器内编写上面的脚本文件,并利用菜单或快捷按钮运行之。三、M-文件M文件是包含MATLAB代码的文件。M文件按其内容和功能可分为脚本M文件和函数M文件这两大类。1、脚本M文件脚本M文件是许多MATLAB代码按顺序组成的命令集合,不接受参数的输入和输出,与MATLAB工作区共享变量空间。脚本文件一般用来实现一个相对独立的功能,比如对某个数据集进行某种分析、绘图,求解方程等等。前面的几个例题都是脚本文件的类型。2、函数M文件MATLAB的M-函数是由function语句引导的,其基本格式如下:function[输出形参列表]=函数名(输入形参列表)注释说明语句段,由%引导;函数体语句函数文件需要在M-文件编辑器中编写。写完以后,按照当前的搜索路径保存。以后就可以随时调用这个函数了。与脚本M文件不同的是,调用函数M文件时需要输入自变量的实际值。随便打开一个M-文件看一看:openlsqlin编程实例例7.定义一个函数f(x)=[sin(x)]2,其中x以“度”为单位。然后再调用该函数。解:在M-文件编辑器内写入下面的文件:functiony=sinsd(x)%自变量x以“度”为单位。%%白城师院%数学建模协会,2007-5-12a=x/180*pi;y=sin(a).^2;将上面的文件保存之后即可随时调用。命令:t=sinsd(45)t=0.5000命令:helpsinsd命令:t=sinsd([45,60])t=0.50000.7500表明该函数对元素群运算有效。上面的语句相当于命令:x=[45,60];t=sinsd(x)t=0.50000.7500命令:x=[45,60;30,90];f=sinsd(x)f=0.50000.75000.25001.0000将源文件中最后一行的“.”去掉,再运行以上两条命令,我们会发现什么?例8.在MATLAB中,一个函数可以调用其它函数,也可以调用自身,即递归调用。下面利用递归算法编写一个函数,用来计算Fibonacci数列的第k项。Fibonacci数列:1,1,2,3,5,8,13,21,……M-函数文件:functiona=my_fibo(k)ifk==1|k==2,a=1;else,a=my_fibo(k-1)+my_fibo(k-2);end将这个文件写入M-文件编辑器并以名称“my_fibo.m”保存,以后就可以调用这个函数。递归算法无疑是解决某一类问题的有效方法,但不宜滥用,因为它的运算速度往往很慢。命令:tic,n=my_fibo(26),tocn=121393elapsed_time=34.4290下面我们尝试用一般的循环语句来求解这个问题。程序:tic,n=[1,1];fork=3:100,n(k)=n(k-1)+n(k-2);end,toc,elapsed_time=0.0100命令:n(1:26)ans=Columns1through81123581321Columns9through16345589144233377610987Columns17through24159725844181676510946177112865746368Columns25through2675025121393例9.可变输入变量个数的函数MATLAB提供的conv()函数可用来求两个多项式的乘积。对于多个多项式的连乘,则不能直接使用此函数,需要用该函数嵌套使用,用起来很不方便。下面编写一个MATLAB函数,使它能直接处理任意多个多项式的乘积问题。M-函数文件:functiona=convs(varargin)a=1;fori=1:length(varargin)a=conv(a,varargin{i});end形参varargin是一个特殊的字符串,它把输入变量列表转换成一个元胞数组,每一个输入变量都是这个元胞数组的一个元素。下面调用这个函数,求解d=(x4+2x3+4x2+5)(x+2)(x2+2x+3)命令:p=[1,2,4,0,5];q=[1,2];f=[1,2,3];d=convs(p,q,f)d=16193645443530命令:convs(p,q,f,[1,1],[1,3],[1,1])ans=1115617637657867864852731590例10关于break、continue、return的用法。当程序运行过程中出现return命令时,程序停止运行。break、continue用在循环语句中。在循环语句中,如果遇到break命令时,程序结束当前的“for”或“while”循环,转而执行它下面最近的end以下的语句;遇到continue时,跳过当次循环而继续下一次的循环,例如,原定要循环5次,但在进入第3次循环时遇到了continue,则第3次的循环被跳过,而继续第4次、第5次的循环。循环体实际上只重复执行了4次。程序:clearstr=’MATLABR14.3version’;fori=1:length(str)if(~isletter(str(i)))continueendresult(i)=str(i);endresultresult=MATLABRversion运行这个程序并观察结果