




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB程序设计,M文件编写与调试,交互式的命令行工作方式 M文件的程序工作方式,脚本文件(命令文件),函数文件,两类M文件,MATLAB两种工作方式,6.1 脚本文件,脚本文件(命令文件)是将需要运行的命令编辑到一个命令文件中。 在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。 脚本文件没有输入参数,也不返回输出参数。,1. input函数:用于向计算机输入一个参数。 调用格式: A=input(提示信息,选项); 注:s选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令 xm=input(Whats your name:,s),数据的输入,【例1】 求一元二次方程ax2 +bx+c=0的根。 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) 将该程序以a1.m文件存盘,然后运行a1.m文件。,2 pause函数:暂停程序的执行。 调用格式: pause(延迟秒数) 注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。,hold on % 图形迭加 axis(0,100,0,120); % 设置坐标轴 k=0;A=0,0; %导弹初始位置 B=0,100; %飞机初始位置 v=1;dt=1; %离散时间改变量 d=100; %相距距离 while d0.5 plot(A(1),A(2), r.); %画导弹位置 plot(B(1),B(2), b*); %画飞机位置 pause(0.2); k=k+1; B=B+v*dt,0; %飞机移动位置 e=B-A; %导弹指向飞机向量 d=norm(e); e0=e/d; %取向量方向(单位化) A=A+2.0*v*dt*e0; %导弹追击位置 end,a2.m,【例2】,数据的输出,3 disp函数:命令窗口输出函数。 调用格式: disp(输出项) 注:输出项为字符串或矩阵。,【例3】 A=Hello,MATLAB; disp(A) %输出为: Hello,MATLAB,程序结构: 顺序结构 MatLab程序运算顺序 选择结构(分支结构) If 条件 , 表达式; else(if), 表达式; end Switch 表达式, case 表达式,otherwise end 循环结构 For 变量=表达式, 循环语句; end While 条件,语句 ; end,6.1.1 MATLAB的程序结构,【例4】 if语句运用举例:输入三角形的三条边,求面积。,A=input(请输入三角形的三条边:); if A(1)+A(2)A(3) else disp(不能构成一个三角形。) end %运行: 请输入三角形的三条边:4 5 6 a4.m,程序结构: if选择结构,【例5】 switch语句运用举例:根据变量 num 的值来决定显示的内容。,num=input(请输入一个数); switch num case -1 disp(I am a teacher.); case 0 disp(I am a student.); case 1 disp(You are a teacher.); otherwise disp(You are a student.); end,a5.m,程序结构: switch 选择结构,实现循环结构的语句: 1 for语句: 格式: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。 2 while语句 格式: while (条件) 循环体语句 end,程序结构:循环结构,【例6】循环语句应用举例:计算满足表达式 的最大y、n值。i为正整数。 y=0; i=1; while 1 %循环的条件为1。本例循环条件总是满足的,是个永真循环 f=1/(2*i-1); y=y+f; if y3 break; end i=i+1; end n=i-1 y=y-f,Break语句 break语句常用在for或while循环语句中,一般与if语句一起使用。其作用是当满足if语句时,在循环尚未结束时跳出当前循环。在嵌套循环中,break只能跳出包含它的最内层循环。,程序结构: while循环结构,Continue 语句 continue也常和if语句一起用在for或while循环中。其作用是当满足if语句时跳过循环体内位于continue之后的那些尚未执行的语句,执行下一次循环的判断。(但不会跳出当前循环),循环的嵌套,如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。 多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。,【例7】多重循环结构举例:求100,1000以内的全部素数。,n=0; for m=100:1000 flag=1; j=m-1; i=2; while i=j %变量prime存放素数 end end prime,a7.m,程序结构: 多重循环结构,6.2 函数文件,函数文件:每一个函数文件都定义一个函数。MATLAB提供的标准函数大部分都是由函数文件定义的。函数文件可以输入参数,也可返回输出参数。,与脚本(命令)文件不同,函数文件犹如一个“黑箱”,把一些数据送入处理,再把结果送出来。MATLAB提供的函数指令大部分都是由函数文件组成。,1函数文件格式,函数文件由function语句引导,其格式为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体 注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。如果输出形参个数多于1,则应该用方括号括起来。,2函数文件调用,函数调用的一般格式是: 输出实参表=函数名(输入实参表),function Yd=DYdt(t,Y) %输入量 global G ME % 定义全局变量 xy=Y(1:2);Vxy=Y(3:4); % ,global G ME G=6.672e-11;ME=5.97e24; . t,YY=ode45(DYdt,tspan,Y0); %采用4、5阶Runge-Kutta法,结构形式上: 函数文件的第一行总是以“function”引导,称为函数申明行。该行以关键字function开头,函数名以及函数的输入输出变量都在这一行被定义。 函数申明行之后以%开头的第一行称注释行。这行供lookfor关键字查询。 第一注释行及其之后的连续以%开头的所有注释行构成整个在线帮助文本。可通过help查询到,称为帮助文本区。 与在线帮助文本区相隔一个“空”行,也以%开头,标志编写及修改该M文件的作者和日期,称为编写和修改记录。 接下来是函数体。为清晰起见,它与前面的注释行以“空”格隔开。,6.2.1 函数文件的结构与特点,function Yd=DYdt(t,Y) %输入量 global G ME % 定义全局变量 xy=Y(1:2);Vxy=Y(3:4); % r=sqrt(sum(xy.2); % Yd=Vxy;-G*ME*xy/r3; %计算Y(t),运行上与脚本文件运行不同 : -脚本文件运行后 ,所产生的所有变量都驻留在 MATLAB基本工作空间(Base workspace)中。只要用户不使用清除指令(clear), MATLAB指令窗不关闭,这些变量将一直保存在基本工作空间中。 -函数文件运行时,MATLAB专门为它开辟一个临时工作空间,称为函数工作空间(Function workspace)。当执行文件最后一行指令时,就结束该函数文件的运行,同时该临时函数工作空间及其所有的中间变量就会立即被清除。,6.2.1 函数文件的结构与特点,6.2.2 函数文件调用,调用格式:输出实参表=函数名(输入实参表) 函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。调用时先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。 函数调用可以嵌套,一个函数可以调用别的函数,甚至可以调用它自己(递归调用)。 文件名与函数名必须一一对应,这样才能保证调用成功。如果函数名和文件名不一致时以文件名为主,【例8】 编写函数文件求小于任意自然数n的 Fibonacci数列。,function f=ffib(n) %用于求Fibonacci数列的函数文件 %f=ffib(n) %1999年30日编 f=1,1; i=1; while f(i)+f(i+1)n f(i+2)=f(i)+f(i+1); i=i+1; end,将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2000的Fibonacci数: ffib(2000),函数文件编写与调用,【例9】 利用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换。,函数文件tran.m: function gama,theta=tran(x,y) gama=sqrt(x*x+y*y); theta=atan(y/x);,转换公式: 极坐标的矢径:= 极坐标的幅角:tg()=y/x,命令窗口直接调用: g,th=tran(1,2),函数文件编写与调用,调用文件main1.m: x=input(Please input x=:); y=input(Please input y=:); gam,the=tran(x,y); gam, the,main1,6.2.2 函数文件调用,调用格式:输出实参表=函数名(输入实参表) MATLAB允许使用比“标称数目”少的输入输出参数,实现对函数的调用。 调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。 只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。,【例10】 nargin用法示例,函数文件charry.m: function fout=charry(a,b,c) if nargin=1 fout=a; elseif nargin=2 fout=a+b; elseif nargin=3 fout=(a*b*c)/2; end,命令文件mydemo.m: x=1:3;y=4; charry (x) charry (x,3) charry (x,y,3),执行mydemo.m后的输出是: ans = 1 2 3 ans = 4 5 6 ans = 6 12 18 %注意:nargin和nargout本身都是函数,所以用户不能赋值,也不能直接显示,函数文件编写与调用,函数的类别,主函数和子函数: 开头定义的函数文件为主函数,而在函数体内定义的其他函数为子函数。 子函数只能被主函数或者同一主函数下的其他子函数所调用。 局部函数 Matlab语言中把存放在目录private下的函数称为局部函数,这些函数只有private目录的父目录中的函数才可以调用,而子函数只能被其所在M文件的主函数所调用,所以,局部函数在可用范围上大于子函数。 注:M文件调用函数时,首先检测该函数是否为此文件的子函数;如不是,再检测是否为可用的局部函数;仍然为否时,再检测该函数是否为Matlab搜索路径上的其他M文件。,6.2.3全局变量和局部变量,全局(Global)变量:通过 global 指令定义,MATLAB允许几个不同的函数以及基本工作空间共享同一个变量,这种被共享的变量称为全局变量。 局部(Local)变量:它存在于函数内部的中间变量,产生于函数的运行过程中,其影响范围仅限于该函数本身 %全局变量的作用域是整个MATLAB工作空间,即全程有效。因此,定义全局变量是函数间传递信息的一种手段。但由于所有的函数都可以对它进行存取和修改,故易出错。,【例11】建立函数文件wadd.m,函数将输入的参数乘以相应 的系数后相加。,function f=wadd(x,y) % add two variable global ALPHA BETA % 识别命令窗口的alpha beta值 f=ALPHA*x+BETA*y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025科技有限公司股权转让合同样本示例
- 佛山美术艺考试题及答案
- 法语专四考试题及答案
- 法律援助考试题及答案
- 2025年太阳能壁灯市场调查报告
- 安徽省淮南市教育集团2024-2025学年七年级上学期期末道德与法治试题(含答案)
- LNG和CNG合建站安全评价报告
- 2025年工业厂房租赁合同范本
- 中国金属加工油项目经营分析报告
- 地铁数学考试题及答案
- 2025-2026学年西师大版(2024)小学数学二年级上册(全册)教学设计(附教材目录P234)
- 2025昭通市盐津县公安局警务辅助人员招聘(14人)备考考试题库附答案解析
- 自动扶梯施工方案编制
- 2.2运动与相互作用(第2课时二力平衡)学案-八年级科学浙教版上册
- 第一单元第二课《表现形式》课件人教版初中美术七年级上册
- 一例甲状腺癌患者的护理查房 2
- 国开2025年《行政领导学》形考作业1-4答案
- 具身智能在智能工厂生产流程中的应用可行性分析
- 汽车智能座舱市场分析
- 金坛区苏科版二年级上册劳动《06树叶书签》课件
- 检验员资格认定规定
评论
0/150
提交评论