鸡和兔子共36脚100Matlab,matlab编程.ppt

《matlab编程.ppt》由会员分享,可在线阅读,更多相关《matlab编程.ppt(51页珍藏版)》请在人人文库网上搜索。

1、1,Matlab 编程基础,数学实验,数学软件 Matlab,2,本讲主要内容,M 文件 Matlab 编程基础,算术运算、关系运算、逻辑运算 控制结构:顺序结构、选择结构、循环结构,3,Matlab 编程入门,Matlab 作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算能力和丰富的绘图功能,同时也可以与 C、FORTRAN 等高级语言一样进行程序设计 利用 Matlab 的程序控制功能,将相关 Matlab 命令编成程序存储在一个文件中(M 文件),然后在命令窗口中运行该文件,Matlab 就会自动依次执行文件中的命令,直到全部命令执行完毕 在 Matlab 程序设计中,要充分。

2、利用 Matlab 数据结构的特点,提高编程效率,Matlab 编程简介,4,用 Matlab 语言编写的程序称为 M 文件 M 文件以 .m 为扩展名 M 文件是由若干 Matlab 命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法,M 文件分类(根据调用方式的不同),Script:脚本文件/命令文件 Function:函数文件,M 文件,M 文件介绍,可以直接运行的M文件,5,M 文件的创建的与编辑 M 文件是文本文件,可以用任何文本编辑器来建立和编辑,通常使用 Matlab 自带的 M 文件编辑器,M 文件,6,编程示例,u=0:pi/60:2*pi; v=0:pi/60:p。

3、i; U,V=meshgrid(u,v); R=3; X=R*sin(V).*cos(U); Y=R*sin(V).*sin(U); Z=R*cos(V); mesh(X,Y,Z); axis equal;,编程方式:新建一个 M 文件 myprg1.m,内容如下:,例:用 mesh 绘制半径为 3 的球,命令行方式:, u=0:pi/60:2*pi; v=0:pi/60:pi; U,V=meshgrid(u,v); R=3; X=R*sin(V).*cos(U); Y=R*sin(V).*sin(U); Z=R*cos(V); mesh(X,Y,Z); axis equal;,在命令窗口输入。

4、 myprg1,即可执行该 M 文件,文件的命名规则与变量相同!,7,在命令窗口中输入 f2c,即可执行该 M 文件,例:编写M文件,将华氏温度转化为摄氏温度:,脚本文件编程示例,M文件运行所产生的变量都驻留在 Matlab 当前工作空间 百分号是注释符,8,函数文件编程示例,例:编写M文件, 求方程 的根(a、b、c自取),在命令窗口中输入 gen(1,2,1),即可调用该 M 文件中的函数gen.,注意:(1)函数名必须与文件名相同 (2)调用时需给出相应的输入参数,9,本讲主要内容,M 文件 Matlab 编程基础,算术运算、关系运算、逻辑运算 控制结构:顺序结构、选择结构、循环结构,1。

5、0,关系运算,比较大小,如果结论是 真 则返回 1 ,否则返回 0,注意 = = 与 = 的区别,关系操作符可以比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样,关系运算符,11,例:,关系运算举例, 2+2=4, 23, A=1 3 5; 2 0 6; B=3 1 0; 2 4 6; A=B, x=5 0; 4 2; x4,12,逻辑运算,逻辑运算符,A 4 5 6; 7 8 9; disp(B),disp,数据的输出:disp,21,fprintf,fprintf(fid,format,variables),数据的格。

6、式化输出:fprintf,按指定的格式将变量的值输出到屏幕或指定的文件 fid 为文件句柄,若缺省,则输出到屏幕上 format 用来指定数据输出时采用的格式,包含: 普通字符串、格式字符串、转义字符,22,fprintf, a=Hello; b=2.4; c=100*pi; fprintf(a=%s, b=%f, c=%en,a,b,c),例:,format 中的格式字符串要与输出变量一一对应,可以没有输出变量, fprintf( Today is Mondayn),例:,23,选择结构 是根据给定的条件成立或不成立,分别执行不同的语句。Matlab 用于实现选择结构的语句有 if 语句和 。

7、switch 语句。,选择结构,24,单分支结构,if expr(条件) 语句组 end,if 条件语句,if expr(条件) 语句组1 else 语句组2 end,双分支结构,25,if expr1 (条件1) 语句组1 elseif expr2 (条件2) 语句组2 . . elseif exprm (条件m) 语句组m else 语句组 end,多分支结构,if 条件语句,26,If编程示例,function y=control(n) a=20; if n=0 y=a+1; elseif n=1 y=a*(1+n); elseif n=2 y=a+n; else y=a; end,27。

8、,根据表达式的不同取值,分别执行不同的语句,switch expr(表达式) case value1(表达式1) 语句组1 case value2(表达式2) 语句组2 . . case valuem(表达式m) 语句组m otherwise 语句组 end,switch 语句,28,Matlab 首先计算 expression 的值,然后将它依次与各个 case 指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch 结构,switch 后面的表达式 expression 的值可以是一个标量或字符串,switch 语句,otherwise 指令可以不出现,如果所。

9、有的比较结果都为假,则执行 otherwise 后面的语句组,然后跳出 switch 结构,关于 switch 语句的几点注解:,29,switch编程示例,method=input(请输入方法名:) switch method case linear,bilinear disp(Method is linear) case cubic disp(Method is cubic) case nearest disp(Method is nearest) otherwise disp(Unknown method.) end,30,循环结构 是按照给定的条件,重复执行指定的语句。Matlab 用。

10、于实现循环结构的语句有 for 语句和 while 语句,循环结构,程序模块,不成立,成立,条件,31,clear sum=0; for i=1:100 sum=sum+i; end sum,循环变量,for 循环,行向量或矩阵,例:使用for结构计算1+2+3+100,for var = expr 循环体 end,32,clear; y=0; n=100; for k=1:n y=y+1/(2*k-1); end,for编程示例,33,循环语句可以嵌套使用,while 循环,while expr(条件表达式) 循环体 end,不能在 for 循环体内改变循环变量的值,为了提高代码的运行效率,。

11、应尽可能提高代码的向量化程度,避免 for 循环的使用,如果预先就知道循环的次数,则可以采用 for 循环;否则,如果预先无法确定循环的次数,则可以使用 while 循环。,34,例:使用while结构计算1+2+3+100,while编程示例,sum=0; i=1; while i=100 sum=sum+i; i=i+1; end sum,35,这个例子给出了计算 eps 的一种方法。 这里我们用大写 EPS,因此系统中 eps 的值不会被覆盖。当 EPS=eps 时,条件仍成立;而当 EPS=eps/2 时,条件为假,退出循环,所以最后应有 EPS=eps/2。num 用来记录循环次数。。

12、,计算 Matlab 中 eps 值 (exp01.m),num=0; EPS=1; while (1+EPS)1 EPS=EPS/2; num=num+1; end,例:,系统能准确表示的浮点数的精度,36,扩展学习,其他流程控制语句 1. break语句 2. continue语句 3. return语句 4. try语句 5. echo命令 6. input命令 7. keyboard命令 8. pause命令 函数与变量参数传递 3.5.1子函数与私有函数 3.5.2变量作用域 3.5.3函数的参数传递,37,语句格式为: try 语句组1 catch 语句组2 end try语句先试。

13、探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。这种试探性执行语句是其他高级语言所没有的。,try语句,38,例 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。,A=1,2,3;4,5,6; B=7,8,9;10,11,12; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因,39,例1 建立一个命令文件将变量a,b的值互换,然后运行该命令文件。,应用举例,clear; a=1:10; b=11,12,13,14;15,16,17,1。

14、8; c=a;a=b;b=c; a b,40,例2 建立一个函数文件将变量a,b的值互换,然后在命令窗口调用该函数文件。,function a,b=exch(a,b) c=a;a=b;b=c;,然后在MATLAB的命令窗口调用该函数文件: clear; x=1:10; y=11,12,13,14;15,16,17,18; x,y=exch(x,y),41,x=input(请输入x的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y,例3 计算分段函数,的值。,42,例4:将百分制的学生成绩转换为五级制的成绩输出。

15、,clear n=input(输入n= ); if n=90 r=A elseif n=80 r=B elseif n=70 r=C elseif n=60 r=D else r=E end,43,clear n=input(输入n= ); switch fix(n/10) case 10,9 r=A case 8 r=B case 7 r=C case 6 r=D otherwise r=E end,clear n=input(输入n= ); Switch n case n=90 r=A case n=80 r=B case n=70 r=C case n=60 r=D otherwise 。

16、r=E end,44,例5 输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为数字字符则输出其对应的数值,若为其他字符则原样输出。,45,c=input(请输入一个字符,s); if c=A end,46,s=0; a=65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87; for k=a s=s+k; end disp(s);,例6: 已知5个学生4门功课的成绩,求每名学生的总成绩。,47,m=input(m=); p=2:m; for i=2:sqrt(m) n=find(rem(p,i)=0。

17、 end p,例7 求某自然数范围内的全部素数。,mod,48,clear sum=0; for i=1:5 pdr=1; for k=1:i pdr=pdr*k; end sum=sum+pdr; end sum,例8:求1!+2!+3!+ +5!的值,49,递归调用函数文件factor.m: function f=factor(n) if n=1 f=1; else f=factor(n-1)*n; end,利用函数的递归调用,求n!,50,clear chicken=1; while 1 if rem(100-chicken*2, 4)=0 end chicken rabbit=(100-2*chicken)/4,例9:鸡兔同笼问题:鸡和兔子关在一个笼子里,已知共有头36个,脚100个,求笼内关了多少只兔子和多少只鸡?,51,注意的问题: (1)各种程序结构的格式。 (2)A=input(“请输入A的值:”) (3)变量,函数及M文件的命名规则,不可使用关键字像if,while,for,end等命名,M文件名不可与其中的变量重名。 (4)学会使用Matlab的帮助系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值