Matlab程序设计说明.ppt

上传人:夺命阿水 文档编号:242040 上传时间:2023-03-16 格式:PPT 页数:45 大小:1.06MB
返回 下载 相关 举报
Matlab程序设计说明.ppt_第1页
第1页 / 共45页
Matlab程序设计说明.ppt_第2页
第2页 / 共45页
Matlab程序设计说明.ppt_第3页
第3页 / 共45页
Matlab程序设计说明.ppt_第4页
第4页 / 共45页
Matlab程序设计说明.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《Matlab程序设计说明.ppt》由会员分享,可在线阅读,更多相关《Matlab程序设计说明.ppt(45页珍藏版)》请在课桌文档上搜索。

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:pi;

3、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;,在命令窗口输入 myprg1,即可执行该 M 文件

4、,文件的命名规则与变量相同!,7,在命令窗口中输入 f2c,即可执行该 M 文件,例:编写M文件,将华氏温度转化为摄氏温度:,编程示例,M文件运行所产生的变量都驻留在 Matlab 当前工作空间 百分号是注释符 M文件必须在当前工作目录下才能运行,8,本讲主要内容,M 文件 Matlab 编程基础,算术运算、关系运算、逻辑运算 控制结构:顺序结构、选择结构、循环结构,9,关系运算,比较大小,如果结论是 真 则返回 1,否则返回 0,注意=与=的区别,关系操作符可以比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样,关系运算

5、符,10,例:,关系运算举例,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,11,逻辑运算,逻辑运算符,A&B 等价于 and(A,B)A|B 等价于 or(A,B)A 等价于 not(A),12,逻辑运算表,在 Matlab 中,0 表示“假”,非零表示“真”,13,all(x)如果向量 X 中所有元素都非零,则返回 1,否则返回 0,若 x 为矩阵,则 any 和 all 按列运算,返回一个 0-1 向量,逻辑运算,逻辑运算函数:all、any,any(x)如果向量 X 中存在非零元素,则返回 1,否则返回 0,14,一些测试函

6、数,isfinite(5)isinf(5),测试函数,15,运算优先级,高,低,16,本讲主要内容,M 文件 Matlab 编程基础,算术运算、关系运算、逻辑运算 控制结构:,顺序结构:数据输入输出(input、disp、fprintf 等)选择结构:if 语句、switch 语句 循环结构:for 循环、while 循环,17,程序控制结构有三种:顺序结构、选择结构和循环结构 任何复杂的程序都由这三种基本结构组成,M文件控制流,顺序结构,18,数据的输入:input,A=input(提示信息),其中 提示信息 为字符串,该命令要求用户输入 A 的值(可以是数或字符串),input,19,di

7、sp(X),输出变量 X 的值,X 可以是数值矩阵或字符串 一次只能输出一个变量,B=1 2 3;4 5 6;7 8 9;disp(B),disp,数据的输出:disp,20,fprintf,fprintf(fid,format,variables),数据的格式化输出:fprintf,按指定的格式将变量的值输出到屏幕或指定的文件 fid 为文件句柄,若缺省,则输出到屏幕上 format 用来指定数据输出时采用的格式,包含:普通字符串、格式字符串、转义字符,21,fprintf,a=Hello;b=2.4;c=100*pi;fprintf(a=%s,b=%f,c=%en,a,b,c),例:,fo

8、rmat 中的格式字符串要与输出变量一一对应,可以没有输出变量,fprintf(Today is Mondayn),例:,22,pause,暂停:pause,pause 或 pause(n),若想强行终止正常运行的程序,可以使用 Ctrl+c,其中 n 是暂停的时间,以秒为单位 若缺省,则将暂停程序,直到用户按任意键后继续,pause off 屏蔽程序中所有 pause 的作用 pause on 打开 pause 的作用,23,选择结构 是根据给定的条件成立或不成立,分别执行不同的语句。Matlab 用于实现选择结构的语句有 if 语句和 switch 语句。,选择结构,24,单分支结构,if

9、 expr(条件)语句组end,if 条件语句,if expr(条件)语句组1else 语句组2end,双分支结构,25,if expr1(条件1)语句组1elseif expr2(条件2)语句组2.elseif exprm(条件m)语句组melse 语句组end,多分支结构,if 条件语句,例1 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其它字符则原样输出。,26,if 条件语句,27,c=input(请输入一个字符,s);if c=Aend,解:对应的程序如下:,if 条件语句,28,根据表达式的不同取值,分

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

11、e 后面的语句组,然后跳出 switch 结构,关于 switch 语句的几点注解:,30,例2 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):,price200 没有折扣200=price500 3%折扣500=price1000 5%折扣1000=price2500 8%折扣2500=price5000 10%折扣5000=price 14%折扣,switch 语句,31,price=input(请输入商品价格);swich fix(price/100)case0,1%价格小于200rate=0;case2,3,4%价格大于等于200小于500 rate=3

12、/100;case num2cell(5:9)%价格大于等于500小于1000rate=5/100;case num2cell(10:24)%价格大于等于1000小于2500rate=8/100;case num2cell(25:49)%价格大于等于2500小于5000rate=10/100;otherwise%价格大于等于5000 rate=14/100;endprice=price*(1-rate)%输出商品的实际销售价格,解:程序如下,switch 语句,32,循环结构 是按照给定的条件,重复执行指定的语句。Matlab 用于实现循环结构的语句有 for 语句和 while 语句,循环结

13、构,33,for var=expr 循环体end,循环变量,表达式 expr 可以是行向量,也可以是矩阵,for 循环,clear;y=0;n=100;for k=1:n y=y+1/(2*k-1);end,34,例4 相传古代印度国王要褒奖他的聪明能干的宰相达依尔,问他要什么,达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二个格子上放二粒麦子,以后每个格子的麦子数都按前一格的两倍计算。如果陛下按此法给我64格麦子,就感激不尽,其它什么也不要了。”国王想:“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还不够,请你为国王算一下共要给达依尔多少小麦(1 小麦约 粒)?

14、,Matlab程序设计-for循环,35,解:输入以下Matlab命令计算,Matlab 程序设计for循环,a=1;s=0;for i=1:64 s=s+a;a=2*a;end,36,Matlab 程序设计for循环,例5 公元前五世纪我国古代数学家张丘建在算经一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?,解:,可设成不定方程求解,Matlab程序为:for x=0:19 for y=0:33 for z=0:100 if(x+y+z=100)&(5*x+3*y+z/3=100)d=x,y,z end end endend,37,循环

15、语句可以嵌套使用,while 循环,while expr(条件)循环体end,不能在 for 循环体内改变循环变量的值,为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免 for 循环的使用,如果预先就知道循环的次数,则可以采用 for 循环;否则,如果预先无法确定循环的次数,则可以使用 while 循环。,38,编程示例,数论中的一个有趣问题:3n+1 问题:任取一个正整数,如果是偶数,用 2 除,如果是奇数,用 3 乘再加 1,反复这个过程,直到所得到的数为 1。问:是否存在使该过程永不中止的整数?,例6:,39,while 1 n=input(Please enter n(non

16、positive quit):);if n1 if rem(n,2)=0 n=n/2;else n=3*n+1;end fprintf(n n=%d,n);end fprintf(n n=%d is not we need!continue.n,nt);end,编程示例,解:输入以下Matlab命令计算,40,这个例子给出了计算 eps 的一种方法。这里我们用大写 EPS,因此系统中 eps 的值不会被覆盖。当 EPS=eps 时,条件仍成立;而当 EPS=eps/2 时,条件为假,退出循环,所以最后应有 EPS=eps/2。num 用来记录循环次数。,计算 Matlab 中 eps 值,wh

17、ile编程示例,num=0;EPS=1;while(1+EPS)1 EPS=EPS/2;num=num+1;end,例7:,41,break 和 continue,break 语句用于终止循环的执行,即跳出最内层循环 continue 语句用于结束本次循环,进行下一次循环 break 和 continue 一般与 if 语句配合使用,其它流控制语句,42,首先由计算机随机产生一个 1,100 之间的一个整数,然后由用户猜测所产生的这个数。根据用户猜测的情况给出不同的提示,如果猜测的数大于产生的数,则显示 Higher,小于则显示 Lower,等于则显示 You won!,同时退出游戏。用户最多

18、有 7 次机会。,编程示例,猜数游戏,例8:,编程示例,%猜数游戏clear;x=round(100*rand);%由计算机随机产生一个0,100的整数n=7;%有7次机会test=1;disp(欢迎参加猜数游戏!你共有,num2str(n),次机会);disp(请输入一个0到100之间的一个整数);for k=1:n guess=input(Enter your guess:);if guess x disp(high);else disp(You won!);test=0;break;end n=n-1;disp(你还有,num2str(n),次机会!);endif test=1 disp(You lost!)end,43,44,上机作业,1、试说明下面两段程序的功能,最后两个 x 值为多少?,2、已知 sin(x)的幂级数展开公式为,x=1;while x+xx,x=x/2;end,x=1;while x+xx,x=2*x;end,试利用这个公式和第 1 题中的技巧,计算 sin(/2)和 sin(31/2)的值,并与 Matlab 自带的 sin 函数比较,误差分别多大?为什么?,选择=结果,汇报结束 谢谢观看!欢迎提出您的宝贵意见!,

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号