matlab第七讲教案

上传人:pia****nwu 文档编号:159349461 上传时间:2022-10-08 格式:DOC 页数:11 大小:139.02KB
返回 下载 相关 举报
matlab第七讲教案_第1页
第1页 / 共11页
matlab第七讲教案_第2页
第2页 / 共11页
matlab第七讲教案_第3页
第3页 / 共11页
点击查看更多>>
资源描述
西南科技大学本科生课程备课教案计算机技术在安全工程中的应用 Matlab入门及应用授课教师:徐中慧班 级:专 业:安全技术及工程第七章 逻辑函数与控制结构课型:新授课 教具:多媒体教学设备,matlab教学软件一、目标与要求能够正确使用函数find,正解和正确使用if/else系列命令,理解switch/case结构,正确使用for循环和while循环。二、教学重点与难点本堂课教学的重点在于引导学生在编写matlab程序时能够熟练运用控制结构的相关函数实现相应的功能。三、教学方法 本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。四、教学内容课后习题讲解% onea=15 3 22;3 8 5;14 3 82;b=1 5 6;c=12 18 5 2;d=a(:,3)% twoe=b,d% threef=b;d% fourg=c(1:3);a% fiveh=a(1,3),c(1,2),b(2,1)% Variable Definition Density_mercury=13560;g=9.81;p=0:10000:100000;% mercuryh_mercury=p./(Density_mercury*g)% waterh_water=h_mercury.*13560/1000% outputh=h_mercury,h_water (3)已知下列矩阵:查找各矩阵中所有大于10的元素的序号,输出结果用单序号方法表示。查找各矩阵中所有大于10的元素的序号,输出结果用该元素的下标表示。查找各矩阵中所有大于10的元素。查找各矩阵中所有大于10小于40的元素的序号,输出结果用单序号方法表示。查找各矩阵中所有大于10小于40的元素的序号,输出结果用该元素的下标表示。查找各矩阵中所有大于10小于40的元素用length和find查询各矩阵中数值在0到10之间或70到80之间元素的个数。% Variable Definition x=1 10 42 6;5 8 78 23;56 45 9 13;23 22 8 9;y=1 2 3;4 10 12;7 21 27;z=10 22 5 13;% onea=find(x10),b=find(y10),c=find(z10),% twoa2,A2=find(x10),b2,B2=find(y10),c2,C2=find(z10),% threea3=x(a),b3=y(b),c3=z(c),% foura4=find(x10&x10&y10&z10&x10&y10&z0&x70&x0&y70&y0&z70&z21 disp(You have reached legal drinking age !)else disp(Youv not reached legal drinking age !)endHeight=input(Enter a value of your height: );if height155 disp(You have reached the height !)else disp(Youv not reached the height !)endsize=input(Enter a value of size: );if size5.5 disp( Its not a accepted product !)else disp( Its a accepted product!)end或size=input(Enter a value of size: );if size5.3&size0&time0&time0&time260 disp(free fly)else disp(You input a error information !) end接第六课内容(4)switch/case结构在Matlab中,switch/case结构可以根据一个给定参数的不同取值,执行不同的命令。它和if/else/elseif类似,都属于条件分支结构。凡是能够用if/else/elseif结构实现的程序功能都可以用switch/case结构实现。而且用switch/case结构实现程序代码更容易理解。switch/case结构和elseif结构的最大区别在于判断的条件既可以是标题也可以是字符串,在实际情况下,字符串形式的判断条件比数字形式要常用。Switch/case的语法结构如下: switch variable case option1 code to be executed if variable is equal to option 1 case option2 code to be executed if variable is equal to option 2 case option n code to be executed if variable is equal to option n otherwise code to be executed if variable is not equal to any of the optionsend实 例创建函数用来显示三个城市的飞机票价格city=input(Enter the name of a city: ,s)switch city case Boston disp($345) case Denver disp($150) case Honolulu disp(Stay home and study) otherwise disp(Not on file)end语句中otherwise不是必需的,这条语句表示当所有的情况都不满足时,程序的输出结果。在C语言中也有switch/case结构。Matlab和C语言的不同之处在于当某一条件为true时,Matlab不再验证其它条件是否满足。例 题世界上许多国家没有对公制单位的使用做强制性规定,这些国家包括美国、英国、利比亚和缅甸。在美国既可以使用公制单位也可以使用英制单位。例如,老式汽车中既使用了公制单位也使用了英制单位,而1989年以后生产的新款汽车全部采用公制单位。酒的单位是升,牛奶的单位是加仑,距离的单位是英里,功率的单位是瓦特。公制单位和英制单位经常会发生混淆。如果驾车从美国到加拿大旅行就会发现在美国汽油的单位的加仑,而在加拿大汽油的单位是升。用switch/case结构编写一段程序,要求具有以下功能:J 由用户输入汽油的单位(升或加仑)J 提示用户输入想购买汽油的数量J 假设每加仑汽油2.89美元,计算汽油的总价1.问题描述计算汽油的总价2.输入/输出描述输入: 指定汽油的计量单位是加仑还是升以及购买的汽油的数量输出: 每加仑2.89美元,计算汽油的总价clear,clc%Define the cost per gallonrate=2.89;%Ask the user to input gallons or litersunit=input(Enter gallons or liters,s);%Use to switch/case to determine the conversion factorswitch unit case gallons factor=1; case liters factor=0.264; otherwise disp(Not available) factor=0;end%Ask the user how much gas he/she would like to buyvolume=input(Enter the volume you would like to buy inn);%Calculate the cost of the gasif factor=0 cost=volume*factor*rate; %Send the results to the screen fprintf(That will be $ %5.2f for %5.1f %sn,cost,volume,unit)end(5)menu结构函数menu常和switch/case结构一起使用。运行后,在屏幕上会出现一个菜单,菜单的内容可以由编程人员设定。函数menu的语法结构为input=menu(Message to the user,text for button 1,text for button 2,etc.) 在前面飞机票的例子中如果使用menu,用户就可以在菜单上选择任意一个城市。由于用户不可能选择“not on file”作为城市名,因此原程序中可以去掉otherwise语句:city=menu(Select a city from the menu:,Boston,Denver,Honolulu)switch city case 1 disp($345) case 2 disp($150) case 3 disp(Stay home and study)end注:使用菜单这种图形化界面可以大大减少用户出现拼写错误的可能性。同时在case语句中用序号代替了字符串。这个脚本程序运行后,屏幕上会出现如下图所示的菜单,用户可以选择任意一个选项,matlab就会出现相关的结果。加油问题,采用菜单方式在上例中用switch/case实现了以加仑或升为单位加油的功能。程序中存在一个问题:即如果用户拼写错误,程序将无法运行。例如:当程序提示用户输入gallons或liters时,用户错误的输入litters 程序将输出 Not available 如果在程序中使用菜单功能,那么用户只需选择按键就可以完成操作,这样就避免了错误地发生。修改后的程序仍然采用switch/case结构,不过需要添加菜单功能。1.问题描述计算汽油的总价2.输入/输出描述输入 使用菜单确定汽油的计量单位是加仑还是升输出 假设每加仑汽油2.89美元,计算汽油的总价clc,clear% Define the cost per gallonrate=2.89;% Ask the user to input gallons or liters ,using a menudisp(Use the menu box to make your selection)choice=menu(Measure the gasoline in liters or gallons?,gallons,liters);switch choice case 1 factor=1; unit=gallons; case 2 factor=0.264; unit=liter;end% Ask the user how much gas he/she would like to byvolume=input(Enter the volume you would like to buy in ,unit,:n);% Calculate the cost of the gascost=volume*factor*rate;% Send the results to the screenfprintf(That will be $ %5.2f for %5.1f %sn,cost ,volume ,unit)(6)循环结构for循环 循环结构一般用于重复操作。Matlab中有两种不同的循环结构:for循环和while循环。如果已知循环的次数,多采用for循环。如果需要满足某一条件时停止循环,多采用while循环。虽然在程序开发过程中广泛采用循环结构,但是在编程时还是应该尽量避免出现循环结构。在Matlab中,可以使用find命令或矢量化的方法避免循环结构,所谓矢量化就是操作过程中尽量用矢量代替元素。减少循环结构有利于提高程序的运行速度,简化编程步骤。for循环结构非常简单。第一行标识循环,定义索引矩阵。循环体每执行一次,索引值都会发生一次变化。循环标识行后紧接着是执行的代码,最后是循环结束标志end。总之,for循环的一般结构如下:for index=matrix commands to be executedendEg: for k=1 3 5 kendfor k=1:3; a=5.kend提 示大部分计算机程序不具有Matlab中矩阵运算能力,因此常利用循环体定义数组。实际上,在Matlab中利用下述代码创建适量更简单。for k=1:5a(k)=k.2endk=1:5,a=k.2for循环常和if语句配合使用例如:在下面这段程序中,统计考试成绩为90分以上的有多少人?scores=76 45 98 97;count=0;for k=1:length(scores) if scores(k)90 count=count+1; endenddisp(count)在大多数情况下,for循环中的索引矩阵是一个单行矩阵。如果索引矩阵是一个二维矩阵,matlab每次取矩阵中的一列作为索引值。for k=1 2 3;1 4 9;1 8 27 a=kend for循环的用法总结:l 循环体以for语句开始,以end语句结束。l 循环体的第一行用索引矩阵定义循环的次数。l for循环的索引必须是一个变量,每执行一次循环,索引值就会发生变化。l 可以用前面介绍过的任何一种方法定义索引矩阵,但是一般情况下采用冒号方式定义。l 如果索引矩阵是一个行矢量,那么每执行循环一次,依次取矢量中的一个元素作为索引值。l 如果索引矩阵是二维矩阵,那么每执行循环一次,依次取矩阵中下一列的值,即在这种情况下索引值是一个列矢量。l for循环结束后,索引值等于最后一次执行的数值。l 对程序代码矢量化可以避免for循环。例 题用for循环计算阶乘 阶乘就是1到N所有的数相乘。例如5的阶乘就是1*2*3*4*5120。在数学中,常用感叹号表示阶乘:5!就是5的阶乘。Matlab的内置函数factorial就可以计算阶乘。现在我们编一小段程序来计算阶乘。x=input(Enter a value for factorialn);a=1;for k=1:x a=a*k;enddisp(a)(7)循环结构while循环 while循环和for循环类似,两者的最大区别在于while循环的次数是不固定的。只要判断条件为true,循环体就会被执行。while循环的语法结构如下: while criterion commands to be executedend Eg: k=0; while k3 k=k+1; end disp(k)实 例 While循环还可以检查用户的输入错误。例如:计算以10为底的对数时要求输入数据为正数。用while循环检查输入数据是否为正数,如果不是,提示用户输入正确的数值。程序一直提示用户直到输入正确有效的数据为止。x=input(Enter a positive value of xn);while x=0 disp(log(x) is not defined for negative numbers) x=input(Enter a positive value of xn);endy=log10(x)(7)break和continue break命令可以提前终止循环。Break语句一般嵌套于while或for循环中,用于中止最内层循环。n=0;while n10 n=n+1; a=input(Enter a value greater than 0:); if a=0 disp(You must enter a positive number ) disp(This program will terminate) break end disp(The natural log of that number is ) disp(log(a)end命令continue的用法和break类似,此命令的作用是结束本次循环,直接进入下一次循环。n=0;while n10 n=n+1; a=input(Enter a value greater than 0:); if a=0 disp(You must enter a positive number ) disp(Try again) continue end disp(The natural log of that number is ) disp(log(a)end在这段程序中,如果输入负数,则执行下一次循环,直到n大于10.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!