版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Application of Matlab LanguageMATLAB 应用第四章matlab程序设计目录4.1 M文件4.2 程序控制结构4.3 函数文件4.4 程序调试4.1 M文件4.1.1 Matlab语言的工作方式4.1.2 M文件的建立与打开4.1.3 M文件的分类4.1.1 Matlab语言的工作方式n 交互式命令行操作方式(命令窗口)逐条输入,逐条执行(高级“数学演算纸和图形显示器”),操作简单、直观,但速度慢, 执行过程不能保留。n M文件的编程工作方式Matlab可以像其他高级计算机语言一样进行程 序设计,即将命令编成程序存储在一个以“.m” 为扩展名的文件中(称为M文件
2、),依次运行 文件中的命令,可以重复进行。64.1.2 M文件的建立与打开M文件是一个文本文件,可以用任何编辑程序来建立和编辑,一般最常用的是使用Matlab提供的文本编辑器。建立新的M文件:从MATLAB主界面的File菜单中选择“New”菜单项,再选择“M-file”命令。该编辑器是一个集编辑和调试于一体的工作环境。M-file”命令。从MATLAB主界面的File菜单中选择“Open编辑已有的M文件:4.1.3M文件的分类n M文件有两种形式:脚本文件(Script File):只是一串命令的集合, 运行一个脚本文件等价于从命令窗口中顺序运行文件里的语句。函数文件(Function Fi
3、le):如果m文件的第一个可执行语句以“function”开始,该文件就是函数文件。每个函数文件都定义一个能够实现某种特定功能的函数。8脚本文件和函数文件的区别n 脚本文件没有输入参量,也不返回输出参量;函数文件可以带输入参量,也可以返回输出参量。n 脚本文件运行产生的所有变量都驻留在工作空间中,所有命令的执行结果也返回工作空间;函数文件运行过程中产生的变量为中间变量(称为局 部变量),当函数文件执行完毕时,这些变量也 被清除。n 脚本文件可以直接运行;函数文件不能直接运行, 要以函数调用的方式来调用它。脚本文件例4-1 建立文件互换变量a、b的值clear;a = 1:10;b = 11,1
4、2,13,14;15,16,17,18;c = a; a = b; b = c; ab将文件保存为exch,并在命令窗口执行。执行结果:a =1112131415161718b =1234567891010函数文件例4-1 建立文件互换变量a、b的值function a,b = fexch(a,b) c = a; a = b; b = c;保存为“fexch.m”,然后在命令窗口调用该函数文件:clear;x = 1:10;y = 11,12,13,14;15,16,17,18;x,y = fexch(x,y)输出结果为:x =1112131415161718y =12345678910 函数
5、参数a,b,c未保留在工作空间中,x,y保留在工作空间中。目录4.1 M文件4.2 程序控制结构4.3 函数文件4.4 程序调试4.2 程序控制结构n 顺序结构n 选择结构n 循环结构任何复杂的程序都可以由这3种基本结构构成。154.2.1 顺序结构n 顺序结构是指按照程序中语句的排列顺序依次执行, 直到程序的最后一个语句。(最简单的一种程序)1、数据的输入从键盘输入数据,可以使用input函数来进行,调用格式为:A = input(提示信息,选项)其中提示信息为一个字符串,用于提示用户输入什么样的数据。例如:从键盘输入A矩阵,可以采用下面的命令来完成A = input (输入A矩阵) ;如果
6、在input函数调用时采用s选项,则允许用户输入一个字符串。例: xm = input(Whats your name?,s);4.2.1 顺序结构2、数据的输出命令窗口输出函数主要有disp函数,其调用格式为:disp(输出项)其中输出项既可以为字符串,也可以为矩阵。例如:A = Hello, Tom; disp(A)输出为:Hello, Tom又如:A = 1,2,3;4,5,6;7,8,9;disp(A)输出为:123456789%disp函数输出格式更紧凑4.2.1 顺序结构例4-2求一元二次方程 ax2+bx+c =0 的根。由于Matlab能进行复数运算,所以不需要判断方程的判别式
7、, 可直接根据求根公式求根。程序如下:a = input(a=?);b = input(b=?);c = input(c=?); d = b*b-4*a*c;x = (-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);程序运行结果为:18a=?4 b=?78 c=?54num2str是将数字转换成字符串,例如:num2str(43)得到的将是43,有两个字符 x1=-0.7188,x2=-18.78124.2.2 选择结构选择结构是根据给定的条件成立与否分别执行不同的语句。Matlab用于实现选择
8、结构的语句主要有if语句和switch语句。1. if语句(1) 单分支if语句语句格式:if 条件语句组end例如:当x是整数矩阵时,输出x的值if fix(x)=xdisp(x);fix:向0靠拢取整 end4.2.2 选择结构(2) 双分支if语句语句格式:if 条件语句组 1 else语句组 2 end当条件成立时,执行语句组1,否则执行语句组2, 然后再执行end语句的后续语句。4.2.2 选择结构例4-3 计算分段函数:cos( x + 1) +x2 + 1, x= 10y = xx +x , x 10程序如下:x = input(请输入x的值:);if x = 10y = cos
9、(x+1)+sqrt(x*x+1); elsey = x*sqrt(x+sqrt(x); endy也可以用单分支if语句来实现:x = input(请输入x的值:);y = x*sqrt(x+sqrt(x); if x=10y = cos(x+1)+sqrt(x*x+1); endy4.2.2 选择结构(3)多分支if语句语句格式:if 条件1语句组 1 elseif条件2语句组 2elseif条件m 语句组 melse语句组 n end214.2.2 选择结构例4-4 计算分段函数:程序如下:x = input(请输入x的值:);if x0y = cos(x+1)+sqrt(x*x+1) e
10、lseif x=90优秀80=score90良好70=score80中等60=score70及格score0summean = sum/n end输出结果为:Enter a number(end in 0):67 Enter a number(end in 0):89 Enter a number(end in 0):93 Enter a number(end in 0):70 Enter a number(end in 0):0 sum =319mean = 79.75004.2.4 控制程序流的其他常用指令break语句:用于循环终止或选择结构中断(1) 当在循环体内执行到该语句时,程序将
11、跳出本层循环,继续执行本层循环结束语句end的下一条语句;(2) 在if-end或switch-case选择结构中导致中断。continue语句:跳过循环体中的某些语句当在循环体内执行到该语句时,程序将跳过位于它之后的循环体中其他语句,继续执行循环的下一次迭代。例4-8 求100,200之间第一个能被21整除的整数。程序如下:for n = 100:200if rem(n,21)=0; continueend breakend n程序输出结果为:n =rem(X,Y):求余数函数。1054.2.4 控制程序流的其他常用指令程序的暂停如果程序执行过程中需要暂停,可用pause语句, 其调用格式为
12、:pause pause(n)第一种格式使程序暂停执行,等待用户按任意键后程序继续执行;第二种格式使程序暂停n秒后再继续执行。30目录4.1 M文件4.2 程序控制结构4.3 函数文件4.4 程序调试4.3函数文件4.3.1 函数文件的一般结构4.3.2 函数调用4.3.3 局部变量与全局变量4.3 函数文件函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。Matlab提供的标准函数大部分是由函数文件定义的。函数文件由function语句引导,其基本结构为:function输出形参表 = 函数名(输入形参表) 注释说明部分函数体语句其中,以function开头的一行为引导行(函数申明
13、行),表示该M文件是一个函数文件。函数名的命名规则与变量名相同。当输出形参多于一个时,应该用方括号括起来。说明:当函数文件名与函数名不同时,Matlab将忽略函数名而确认文件名。 因此调用时使用函数文件名。354.3.1 函数文件的一般结构1. 函数申明行位于函数文件的首行,以关键字function开头,定义函数名以及函数的输入/输出参量名。2. 注释说明部分 紧随函数申明行之后以%开头的第一注释行。这一行一般包括大写的函数文件名和函数功能简要描述,供lookfor关键词查询和help在线帮助时使用。 第一注释行及之后连续的注释行。通常包括函数输入/输出参数的含义及调用格式说明等信息, 构成全
14、部在线帮助文本。3. 函数体由实现该函数文件功能的Matlab指令组成。为清晰起见,与前面的注释以空行相隔。4.3.2 函数调用函数调用的一般格式是:输出实参表 = 函数名(输入实参表)注意:函数调用时,各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致。函数调用时,先将实参传递给 相应的形参,从而实现参数传递,然后再执行函数的功能。例4-10 利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。函数文件:tran.m:function rho,theta = tran(x,y)rho = sqrt(x*x+y*y); theta = atan(y/x);调用tran.m的脚
15、本文件main1.m:x = input(please input x=:); y = input(please input y=:); rho,the = tran(x,y);rho the例4-11 编写函数文件,求半径为r的圆的面积和周长。函数文件如下:function s,p = fcircle(r)% FCIRCLE calculates the area and perimeter of a circle of radius r% r圆半径% s圆面积% p圆周长% 2014年11月10日编s = pi*r*r;p = 2*pi*r;37将以上函数文件以文件名fcircle.m保存
16、,然后在命令窗口调用。s,p = fcircle(10)输出结果是:s =314.1593p =62.8319采用help命令或lookfor命令可以显示出注释说明部分的内容。help fcircle屏幕显示:FCIRCLE calculates the area and perimeter of a circle of radius r r圆半径s圆面积p圆周长4.3.3 局部变量与全局变量局部变量存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身。中间变量又称局部(local)变量。全局变量Matlab允许几个不同的函数空间以及基本工作空间共享同一个/一组
17、变量,这种被共享的变量称为全局变量。全局变量的作用域是整个Matlab的工作空间,所有函数都可以对它进行存取和修改。全局变量用global命令定义,格式为:global 变量名38目录4.1 M文件4.2 程序控制结构4.3 函数文件4.4 程序调试4.4 程序调试程序调试是程序设计的重要环节,也是程序设计人员必须掌握的重 要技能。 Matlab提供了相应的程序调试功能,即可以通过文本编辑器对程序进行调试,又可以在命令窗口结合具体的命令来调试程序。4.4.1 程序调试概述一般说来,应用程序的错误有两类,一类是语法错误,另一类是运行时的错误(逻辑错误)。对于语法错误,Matlab会给出相应的错
18、误信息,并标出错误在程序中的行号。例如:输入下列程序:A = 87;B = 9.3;C = A+*B;系统将给出错误信息:? Error: File: Untitled1.m Line: 3 Column: 7 Unexpected MATLAB operator.通过分析Matlab给出的错误信息,不难排查程序中的语法错误。404.4.1 程序调试概述Matlab对程序的逻辑错误是无能为力的,不会给出任何提示信息。可以通过调试手段来发现。采取的方法如下:。 将程序的一些主要中间结果输出到命令窗口,从而确定错误的区段 使用Matlab的调试菜单(debug), 通过图像界面操作来实现程序调试444.4.2 Matlab调试菜单1、控制单步运行 step:单步运行,不进入函数; step in: 单步运行,进入函数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演出经纪人之《演出经纪实务》测试卷附答案详解
- PETS一级笔试模拟试题(含详细答案解析)
- 广东省河源市东源县2027届数学九上期末达标检测模拟试题含解析
- 轨道交通运营期施工防护方案
- 髂静脉压迫综合征弹力袜穿戴日常指导规范共识
- 2027届广东省深圳高级中学数学九上期末经典模拟试题含解析
- Oracle数据库工程师面试题及详细答案(实操完整版)
- 车间安全教育培训试题及答案
- 管廊突发事件调度处置规程
- 2026年安管人员继续教育试题及答案
- 2025-2026学年人教版PEP三年级英语上册全册单词表(带音标)
- 室外施工道路施工协议书8篇
- 2026-2030中国新型农村社区与新农村综合体产业发展分析及典型案例研究报告
- 2026年家禽屠宰加工工协同作业考核试卷及答案
- 社会体育导论 课件全套 0社会体育导论课程介绍-10社会体育指导实践
- 2026年全科医生转岗培训考试(理论考核)题库及答案(辽宁省)
- 2026年3月22日山东省事业单位统考《职业能力倾向测验》真题
- 2026年河北省中考英语试题(含答案和音频)
- 2026年中级消防设施操作员(监控方向)考试题库(附答案)
- 2026新版动火作业专题培训课件
- 小学数学分层教学设计实践案例
评论
0/150
提交评论