matlab基本语句1。
循环语句forﻫfor i=s1:s3:s2循环语句组ﻫendﻫ解释:首先给i赋值s1;然后,判断i就是否介于s1与s2之间;如果就是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。
例:求1到100得与,可以编程如下:sum=0ﻫfor i=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(条件)ﻫ语句endﻫif(条件)ﻫ语句ﻫelseﻫ语句ﻫendﻫif(条件)语句elseifﻫ语句ﻫendﻫﻫ4.关系表达式:=,>,〈,>=,<=,==(精确等于)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-6 11 -6。
相当于poly(a)=1入^3+(-6)入^2+11入+(—6)。
ﻫpan():可以求矩阵得伴随矩阵、ﻫsin()等三角函数。
MATLAB在数学建模中得应用(3)ﻫ一、程序设计概述ﻫMATLAB所提供得程序设计语言就是一种被称为第四代编程语言得高级程序设计语言,其程序简洁,可读性很强,容易调试、同时,MATLAB得编程效率比C/C ++语言要高得多、MATLAB编程环境有很多、常用得有:1. 命令窗口ﻫ2. word窗口3、M-文件编辑器,这就是最好得编程环境。
M—文件得扩展名为“。
m”。
M-文件得格式分为两种:ﻫ①l M-脚本文件,也可称为“命令文件”。
ﻫ②M-函数文件、这就是matlab程序设计得主流。
lﻫ保存后得文件可以随时调用、ﻫ二、MATLAB程序结构ﻫ按照现代程序设计得观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构就是:顺序结构、选择结构与循环结构。
其中顺序结构就是最基本得结构,它依照语句得自然顺序逐条地执行程序得各条语句。
如果要根据输入数据得实际情况进行逻辑判断,对不同得结果进行不同得处理,可以使用选择结构。
如果需要反复执行某些程序段落,可以使用循环结构、1 顺序结构ﻫ顺序结构就是由两个程序模块串接构成、一个程序模块就是完成一项独立功能得逻辑单元,它可以就是一段程序、一个函数,或者就是一条语句。
ﻫ瞧图可知,在顺序结构中,这两个程序模块就是顺序执行得,即先执行<程序模块1>,然后执行〈程序模块2>。
ﻫ实现顺序结构得方法非常简单,只需将程序语句顺序排列即可、ﻫ2 选择结构在MATLAB中,选择结构可由两种语句来实现。
ﻫ(1) if语句if语句得最简单用法为:ﻫif 表达式;ﻫ程序模块;ﻫendﻫﻫif语句得另一种用法为:ﻫif表达式ﻫ程序模块1ﻫ else 程序模块2ﻫendﻫﻫ例1 使用if语句判断学生得成绩就是否及格。
ﻫ程序:ﻫ clearn=input(’输入n= ')m=60;if n<m,r=’不及格’elser='及格’endﻫ练习一:将例1写入M—文件编辑器,然后在mand window 调用这个程序。
ﻫﻫ当针对多个条件进行选择时,可以采用下面得格式:ﻫif表达式1程序模块1ﻫelseif 表达式2程序模块2…………ﻫelseif表达式n程序模块nelseﻫ程序模块n+1end例2 将百分之得学生成绩转换为五分制输出。
ﻫ程序:clearﻫn=input(’输入n= ’)ﻫif n〉=90ﻫ chji='优秀’elseif n>=80ﻫchji='良好’ﻫ elseif n〉=70ﻫchji=’中等'elseifn>=60ﻫ chji=’及格'ﻫ elsechji=’不及格’endﻫ练习二:将例2写入M—文件编辑器,然后在command window 调用这个程序。
ﻫﻫ(2) switch语句ﻫ switch语句可以替代多分支得if语句,而且switch语句简洁明了,可读性更好。
其格式为:switch表达式ﻫ case 数值1程序模块1ﻫcase 数值2ﻫ程序模块2……otherwise程序模块nﻫend其中得otherwise模块可以省略。
switch语句得执行过程就是:首先计算表达式得值,然后将其结果与每一个case后面得数值依次进行比较,如果相等,则执行该case得程序模块;如果都不相等,则执行otherwise模块中得语句。
如图3所示。
例3 用switch…case开关结构将百分制得学生成绩转换为五分制得成绩输出。
ﻫ程序:ﻫclearx=58switchfix(x/10)ﻫcase {10,9}y=’优秀’ﻫcase 8ﻫy=’良好’case 7y=’中等’case6ﻫy=’及格’ﻫotherwiseﻫy='不及格’ﻫend练习三:将例3写入M-文件编辑器,然后在commandwindow 调用这个程序。
ﻫ3 循环结构循环结构得流程图如图4所示它可以多次重复执行某一组语句。
循环就是计算机解决问题得主要手段。
在MATLAB中,循环结构可以由两种语句结构实现、(1) for…end循环结构、其格式为:ﻫfor i=V,循环体结构,endﻫ其中V为一个行向量,循环变量i每次从V中取一个数值,执行一次循环体得内容,如此下去,直到完成V中得所有分量,就自动结束循环体得执行。
例4 计算s=12+22+52、程序:a=[1 2 5 ]; s=0;for k=a, ﻫs=s+k^2;end, ﻫ s,ﻫ该例题只就是为了说明for语句得格式,事实上,用下面得语句求与更为简单。
命令:ﻫp=sum(a。
^2)ﻫ练习四:建立MATLAB与word得连接,在新建得m—book中写入上面得程序,并用not ebook菜单运行之。
ﻫ循环结构里面还可以包含循环结构,形成多重循环。
例5 设计一个九九乘法表。
ﻫ程序:clearﻫ for i=1:9for j=1:9ﻫa(i , j)=i*j;endendﻫa,练习五:①直接在命令窗编写上面得程序。
ﻫ②试运行下面得程序,并加以分析:程序: disp(' 九九乘法表’),for i=1:9,ﻫfor j=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; while 1+y〉1; 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-文件瞧一瞧:open lsqlin编程实例ﻫ例7。
定义一个函数f(x)=[sin(x)]2, 其中x以“度”为单位、然后再调用该函数。
解:在M-文件编辑器内写入下面得文件:ﻫfunction y=sinsd(x)ﻫ%自变量x以“度"为单位。
ﻫ%ﻫ %白城师院ﻫ%数学建模协会,2007—5-12ﻫ a=x/180*pi;y=sin(a)。
^2;将上面得文件保存之后即可随时调用。
ﻫ命令:ﻫt=sinsd(45)t =0.5000命令:ﻫhelpsinsd命令:ﻫ t=sinsd([45,60]) ﻫt =0、5000 0、7500 ﻫ表明该函数对元素群运算有效、上面得语句相当于ﻫ命令:x=[45,60];t=sinsd(x) ﻫt=ﻫ 0。
50000、7500命令:x=[45,60;30,90];f=sinsd(x) ﻫ f =0。
5000 0、75000.2500 1、0000 ﻫ将源文件中最后一行得“、"去掉,再运行以上两条命令,我们会发现什么?例8。
在MATLAB中,一个函数可以调用其它函数,也可以调用自身,即递归调用、下面利用递归算法编写一个函数,用来计算Fibonacci数列得第k项。
ﻫ Fibonacci数列: 1,1,2,3,5,8,13,21,……ﻫM-函数文件:ﻫfunction a=my_fibo(k)ﻫif k==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=Columns 1through 81 1 23 58 13 21ﻫColumns9through 16ﻫ34 5589 144 233 377 610 987Columns 17 through 24 1 ﻫ597 2584 41816765 10946 177112865746368ﻫColumns 25through26 12 75025 ﻫ1393例9。