收藏 分享(赏)

MATLAB应用11-0.ppt

上传人:hyngb9260 文档编号:7802424 上传时间:2019-05-26 格式:PPT 页数:20 大小:289KB
下载 相关 举报
MATLAB应用11-0.ppt_第1页
第1页 / 共20页
MATLAB应用11-0.ppt_第2页
第2页 / 共20页
MATLAB应用11-0.ppt_第3页
第3页 / 共20页
MATLAB应用11-0.ppt_第4页
第4页 / 共20页
MATLAB应用11-0.ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、MATLAB程序设计,M文件编写与调试,交互式的命令行工作方式 M文件的程序工作方式,脚本文件(命令文件),函数文件,两类M文件,MATLAB两种工作方式,6.1 脚本文件,脚本文件(命令文件)是将需要运行的命令编辑到一个命令文件中。 在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。 脚本文件没有输入参数,也不返回输出参数。,1. input函数:用于向计算机输入一个参数。 调用格式: A=input(提示信息,选项); 注:s选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令xm=input(Whats your name:,s),数据的输入,【例

2、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

3、=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

4、(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) elsedisp(不能构成一个三角形。)end %运行: 请输入三角形的三条边:4 5 6 a4.

5、m,程序结构: if选择结构,【例5】 switch语句运用举例:根据变量 num 的值来决定显示的内容。,num=input(请输入一个数);switch numcase -1disp(I am a teacher.);case 0disp(I am a student.);case 1disp(You are a teacher.);otherwisedisp(You are a student.);end,a5.m,程序结构: switch 选择结构,实现循环结构的语句: 1 for语句:格式: for 循环变量=表达式1:表达式2:表达式3循环体语句end注:其中表达式1的值为循环变量

6、的初值,表达式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 y3break;endi=i+1;endn=i-1y=y-f,Break语句break语句常用在for或while循环语句中,一般与if语句一起使用。其作用是当满足if语句时,在循环尚未结束时跳出当前循环。在嵌套循环中,brea

7、k只能跳出包含它的最内层循环。,程序结构: while循环结构,Continue 语句continue也常和if语句一起用在for或while循环中。其作用是当满足if语句时跳过循环体内位于continue之后的那些尚未执行的语句,执行下一次循环的判断。(但不会跳出当前循环),循环的嵌套,如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。 多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。,【例7】多重循环结构举例:求100,1000以内的全部素数。,n=0;for m=100:1

8、000flag=1; j=m-1; i=2;while i=j %变量prime存放素数endendprime,a7.m,程序结构: 多重循环结构,6.2 函数文件,函数文件:每一个函数文件都定义一个函数。MATLAB提供的标准函数大部分都是由函数文件定义的。函数文件可以输入参数,也可返回输出参数。,与脚本(命令)文件不同,函数文件犹如一个“黑箱”,把一些数据送入处理,再把结果送出来。MATLAB提供的函数指令大部分都是由函数文件组成。,1函数文件格式,函数文件由function语句引导,其格式为:function 输出形参表=函数名(输入形参表)注释说明部分函数体 注:其中函数名的命名规则与

9、变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。如果输出形参个数多于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”引导,称为函数申明行。该行以关键字funct

10、ion开头,函数名以及函数的输入输出变量都在这一行被定义。 函数申明行之后以%开头的第一行称注释行。这行供lookfor关键字查询。 第一注释行及其之后的连续以%开头的所有注释行构成整个在线帮助文本。可通过help查询到,称为帮助文本区。 与在线帮助文本区相隔一个“空”行,也以%开头,标志编写及修改该M文件的作者和日期,称为编写和修改记录。 接下来是函数体。为清晰起见,它与前面的注释行以“空”格隔开。,6.2.1 函数文件的结构与特点,function Yd=DYdt(t,Y) %输入量 global G ME % 定义全局变量 xy=Y(1:2);Vxy=Y(3:4); % r=sqrt(s

11、um(xy.2); % Yd=Vxy;-G*ME*xy/r3; %计算Y(t),运行上与脚本文件运行不同 : -脚本文件运行后 ,所产生的所有变量都驻留在 MATLAB基本工作空间(Base workspace)中。只要用户不使用清除指令(clear), MATLAB指令窗不关闭,这些变量将一直保存在基本工作空间中。 -函数文件运行时,MATLAB专门为它开辟一个临时工作空间,称为函数工作空间(Function workspace)。当执行文件最后一行指令时,就结束该函数文件的运行,同时该临时函数工作空间及其所有的中间变量就会立即被清除。,6.2.1 函数文件的结构与特点,6.2.2 函数文件

12、调用,调用格式:输出实参表=函数名(输入实参表) 函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。调用时先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。 函数调用可以嵌套,一个函数可以调用别的函数,甚至可以调用它自己(递归调用)。 文件名与函数名必须一一对应,这样才能保证调用成功。如果函数名和文件名不一致时以文件名为主,【例8】 编写函数文件求小于任意自然数n的 Fibonacci数列。,function f=ffib(n)%用于求Fibonacci数列的函数文件%f=ffib(n)%1999年30日编f=1,1;i=1;while f(i)

13、+f(i+1)nf(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,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报