




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Matlab 基本语句1.循环语句forfor i=s1:s3:s2 循环语句组end解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end
2、 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环.2.循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end
3、0; 3.if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 en
4、d 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 -
5、6 11 -6。相当于poly(a)1入3+(-6)入2+11入+(-6)。compan():可以求矩阵的伴随矩阵.sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C+语言要高得多。 MATLAB编程环境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件编辑器,这是最好的编程环境。 M-文件的扩展名为“.
6、m”。M-文件的格式分为两种: l M-脚本文件,也可称为“命令文件”。 M-函数文件。这是matlab程序设计的主流。l 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反
7、复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行<程序模块1>,然后执行<程序模块2>。 实现顺序结构的方法非常简单,只需将程序语句顺序排列即可。 2 选择结构 在MATLAB中,选择结构可由两种语句来实现。 (1) if语句 if语句的最简单用法为: if 表达式; 程序模块; end
8、if语句的另一种用法为: if 表达式 程序模块1 else 程序模块2 end 例1 使用if语句判断学生的成绩是否及格。 程序: clear n=input(输入n= ) m=60;if nm, r=不及格 else r=及格 end 练习一:将例1写入M-文件编辑器,然后在command window 调用这个程序。
9、0; 当针对多个条件进行选择时,可以采用下面的格式: if 表达式1 程序模块1 elseif 表达式2 程序模块2
10、160; elseif 表达式n 程序模块n
11、; else 程序模块n+1 end 例2 将百分制的学生成绩转换为五分制输出。 程序: clear n=input(输入n= ) if n>=90 chji=优秀 elseif n>=80
12、 chji=良好 elseif n>=70 chji=中等 elseif n>=60 chji=及格 else chji=不及格 end 练习二:将例2写入M-文件编辑器,然后在command window 调用这个程序。 (2) switch语句 switch语句可以替代多分支的if语句,而且switch语句简洁明了,可读性更好。其格式为: switch 表达式 case 数值1 &
13、#160; 程序模块1 case 数值2 程序模块2 otherwise 程序模块n end 其中的otherwise模块可以省略。 switch语句的执行过程是:首先计算表达式的值,然后将其结果与每一个case后面的数值依次进行比较,如果相等,则执行该case的程序模块;如果都不相等,则执行otherwise模块中的语句。
14、如图3所示。 例3 用switchcase开关结构将百分制的学生成绩转换为五分制的成绩输出。 程序: clear x=58 switch fix(x/10) case 10,9 y=优秀 case 8
15、 y=良好 case 7 y=中等 case 6 y=及格 otherwise y=不及格 end
16、160; 练习三:将例3写入M-文件编辑器,然后在command window 调用这个程序。 3 循环结构 循环结构的流程图如图4所示它可以多次重复执行某一组语句。循环是计算机解决问题的主要手段。程序命令后面输入与不输入“;”的区别是,当输入半角的分号时,命令中的变量会自动列表储存在 workspace中,变量的值不会在window command中显示出来;当不输入半角的分号时,变量不仅也会自动储存在workspace中,还会在window command窗口中显示出变量的值。Matlab取整函数有: fix, floor, ceil, round
17、.具体应用方法如下: fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1; floor,顾名思义,就是地板,所以是取比它小的整数,即朝负无穷方向取整,如floor(-1.3)=-2; floor(1.3)=1; floor(-1.8)=-2,floor(1.8)=1 ceil与floor相反,它的意思是天花板,也就是取比它大的最小整数,即朝正无穷方向取整,如ceil(-1.3)=-1; ceil(1.3)=2;ceil(-1.8)=-1,ceil(1.8)=2 round四
18、舍五入到最近的整数,如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。 在MATLAB中,循环结构可以由两种语句结构实现。 (1) forend 循环结构。其格式为: for i=V,循环体结构,end
19、0; 其中V为一个行向量,循环变量i每次从V中取一个数值,执行一次循环体的内容,如此下去,直到完成V中的所有分量,就自动结束循环体的执行。 例4 计算 s=12+22+52。 程序: a=1 2 5 s=0; for k=a, s=s+k2; end, s, 该例题只是为了说明for语句的格式,事实上,用下面的语句求和更为简单。 命令: p=sum(a.2) 练习四:建
20、立MATLAB与word的连接,在新建的m-book中写入上面的程序,并用notebook菜单运行之。 循环结构里面还可以包含循环结构,形成多重循环。 例5 设计一个九九乘法表。 程序: clear for i=1:9 for j=1:9 a(i , j)=i*j; end end a, 练习五:直接在命令窗编写上面的程序。 试运行
21、下面的程序,并加以分析: 程序: disp( 九九乘法表 ),for i=1:9, for j=1:i,pi(j)=j*i;end,disp(pi),end 大括号 用于单元阵列的赋值 中括号 用于形成一个向量或矩阵小括号 通常用于一般的算术表达式,指示优先运算,还用于表示函数变量、向量下标和矩阵下标等到(2) whileend 循环结构。其格式为: while (表达式) 循环结构体 end 例6 求MATLAB的相对
22、精度 解:解题的思路是,让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-文件编辑器内编写上面的脚本文件,并利用菜单或快捷按钮运行之。
23、三、M-文件 M文件是包含MATLAB代码的文件。M文件按其内容和功能可分为脚本M文件和函数M文件这两大类。 1、脚本M文件 脚本M文件是许多MATLAB代码按顺序组成的命令集合,不接受参数的输入和输出,与MATLAB工作区共享变量空间。脚本文件一般用来实现一个相对独立的功能,比如对某个数据集进行某种分析、绘图,求解方程等等。 前面的几个例题都是脚本文件的类型。 2、函数M文件 MATLAB的M-函数是由function语句引导的,其基本格式如下: function 输出形参列表 = 函数名 (输入形参列表) 注释说明语句段,由%引导; 函数体语句 函数
24、文件需要在M-文件编辑器(editor)中编写。写完以后,按照当前的搜索路径保存。以后就可以随时调用这个函数了。 与脚本M文件不同的是,调用函数M文件时需要输入自变量的实际值。 随便打开一个M-文件看一看: open lsqlin 编程实例 例7. 定义一个函数 f(x)=sin(x)2, 其中x以“度”为单位。然后再调用该函数。 解:在M-文件编辑器内写入下面的文件: function y=sinsd(x) %自变量x以“度”为单位。 a=x/180*pi; %a以弧度表示y=sin(a).2; 将上面的文件保存之后即可随时调用。
25、 命令: t=sinsd(45) t = 0.5000 命令: help sinsd 命令: t=sinsd(45,60) t = 0.5000 0.7500 表明该函数对元素群运算有效。上面的语句相当于 命令: x=45,60;t=sinsd(x) t = &
26、#160; 0.5000 0.7500 命令: x=45,60;30,90;f=sinsd(x) f = 0.5000 0.7500 0.2500 1.0000 将源文件中最后一行的“.”去掉,再运行以上两条命令,我们会发现什么?(不能以矩阵的方式求解) 例8.&
27、#160;在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和toc用
28、来记录matlab命令执行的时间。 tic用来保存当前时间,而后使用toc来记录程序完成时间。 两者往往结合使用,用法如下: tic operations toc 显示时间单位:秒度往往很慢。 命令: tic, n= my_fibo(26) ,toc n =
29、 121393 elapsed_time = 34.4290(与计算机的运行有关) 下面我们尝试用一般的循环语句来求解这个问题。 程序: tic,n=1,1;for k=3:100,n(k)=n(k-1)+n(k-2);end,toc, elapsed_time = 0.0100 命令: n(1:26) ans = Columns 1 throug
30、h 8 1 1 2 3 5 8 13 21
31、 Columns 9 through 16 34 55 89 144 233 377 610
32、 987 Columns 17 through 24 1597 2584 4181 6765 10946 17711 28657 46368
33、 Columns 25 through 26 75025 121393 例9. 可变输入变量个数的函数 MATLAB提供的conv( )函数可用来求两个多项式的乘积。对于多个多项式的连乘,则不能直接使用此函数,需要用该函数嵌套使用,用起来很不方便。下面编写一个MATLAB函数,使它能直接处理任意多个多项式的乘积问题。 1. Matlab中使用varargin来实现参数可变的函数2. 只要将最后一个参数设置为varargi
34、n,就可以实现3. 在这个函数里,varargin就是一个cell数组,它包含了用户输入的参数M-函数文件: function a=convs(varargin) a=1; for i=1:length(varargin) a=conv(a,varargini); end 形参varargin是一个特殊的字符串,它把输入变量列表转换成一个元胞数组,每一个输入变量都是这个元胞数组的一个元素。下面调用这个函数,求解 d=(x4+2x3+4x2+5)(x+2)(x2+2x+3) 命令: p=1,2,4,0,5;q=1,2;f=1,2
35、,3; d=convs(p,q,f) d = 1 6 19 36 45 44 35 30 命令: convs(p,q,f,1,1,1,3,1,1)&
36、#160; ans = 1 11 56 176 376 578 678 648 527 315 90 例10 关于break、continue、return的用法。 当程序运行过程中出现return命令
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 篮球单挑协议书
- 联建工厂协议书
- 洗车台租赁合同协议书
- 续租场地协议书
- 良田翻耕协议书
- 道路通信协议书
- 联盟合作协议书
- 建房搭竹架安全协议书
- 店铺租赁合同书协议书
- 肉羊供应协议书
- 《国际银团贷款》课件
- GB/T 23356-2024卷烟烟气气相中一氧化碳的测定非散射红外法
- 泥浆泵清淤外运专项施工方案
- 物管物业交接验收明细表格(全)模板
- TCHEAA 0011.10-2024 家用电器安全使用年限 第10部分:电压力锅
- 中、高级钳工训练图纸
- 声光影的内心感动:电影视听语言学习通超星期末考试答案章节答案2024年
- 人教版初中英语语法和知识点总结以及练习题
- 大众汽车新项目开发流程
- 《大数据导论(第2版)》全套教学课件
- 2024年湖北省宜昌市中考物理试卷
评论
0/150
提交评论