matlab第六讲教案.doc_第1页
matlab第六讲教案.doc_第2页
matlab第六讲教案.doc_第3页
matlab第六讲教案.doc_第4页
matlab第六讲教案.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西南科技大学本科生课程备课教案计算机技术在安全工程中的应用 Matlab入门及应用授课教师:徐中慧班 级:专 业:安全技术及工程第六章 逻辑函数与控制结构课型:新授课 教具:多媒体教学设备,matlab教学软件一、目标与要求能够正确使用函数find,正解和正确使用if/else系列命令,理解switch/case结构,正确使用for循环和while循环。二、教学重点与难点本堂课教学的重点在于引导学生在编写matlab程序时能够熟练运用控制结构的相关函数实现相应的功能。三、教学方法 本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。四、教学内容上机内容回顾(1)创建温度换算表。下列等式描述了华氏温度(TF)、摄氏温度(TC)、开氏温度(TK)和兰金温度(TR)之间的换算关系:根据表达式解答以下问题:(a)创建数据表,把00F到2000F的华氏温度换算成开氏温度。由用户输入华氏温度的步长,用disp和fprintf给表格添加标题和表头并输出格式化数据。x=input(请输入步长);tf=0:x:200;tk=5/9*(tf+459.67);disp( 温度换算表);disp(华氏 开氏);fprintf(%3.0f %6.2fn,tf;tk)请输入步长20 温度换算表华氏 开氏 0 255.37 20 266.48 40 277.59 60 288.71 80 299.82100 310.93120 322.04140 333.15160 344.26180 355.37200 366.48(b)创建一个有25行数据的表,把摄氏温度换算成兰金温度。由用户输入起始温度和合适的步长,用disp和fprintf给表格添加标题和表头并输出格式化数据。x=input(请输入起始摄氏温度);y=input(请输入步长);tc=x:y:x+24*y;tr=9/5*tc+32+459.67;disp( 温度换算表);disp(摄氏 兰金);fprintf(%3.0f %6.2fn,tc;tr)请输入起始摄氏温度0请输入步长20 温度换算表摄氏 兰金 0 491.67 20 527.67 40 563.67 60 599.67 80 635.67100 671.67120 707.67140 743.67160 779.67180 815.67200 851.67220 887.67240 923.67260 959.67280 995.67300 1031.67320 1067.67340 1103.67360 1139.67380 1175.67400 1211.67420 1247.67440 1283.67460 1319.67480 1355.67(c)创建数据表,把摄氏温度换算成华氏温度。由用户输入起始温度、步长和数据的行数。用disp和fprintf给表格添加标题和表头并输出格式化数据。m=input(请输入起始摄氏温度);n=input(请输入步长);w=input(请输入数据的行数)tc=m:n:m+(w-1)*n;tf=9/5*tc+32;disp( 温度换算表);disp(摄氏 华氏);fprintf(%3.0f %6.2fn,tc;tf)请输入起始摄氏温度0请输入步长10请输入数据的行数5w = 5 温度换算表摄氏 华氏 0 32.00 10 50.00 20 68.00 30 86.00 40 104.00(2)在t=0时刻,火箭的发动机关闭,此时火箭的海拔高度为500m,提升速度为125m/s。考虑重力加速度,火箭的高度是时间的函数:计算时间在0到30秒内火箭的高度,并画出曲线:l 用函数ginput估算火箭的最大高度和火箭返回地面的时间。l t=0:30;l h=-9.8/2*t.2+125*t+500;l plot(t,h)l axis(0,30,0,1500)l x,y=ginput(4)l m=max(y)l a,b=ginput(4)l n=mean(a) x = 11.9931 12.5461 12.7535 12.4770y = 1.0e+003 * 1.2917 1.2917 1.2961 1.2961m = 1.2961e+003a = 29.0668 29.0668 28.9286 29.2742b = -2.1930 2.1930 2.1930 2.1930n = 29.0841l 用disp把结果在命令窗口显示出来。 disp(火箭的最大高度(单位/m):);disp(m)disp(火箭返回地面的时间(单位/s):);disp(n)火箭的最大高度(单位/m): 1.2961e+003火箭返回地面的时间(单位/s): 29.0841 (3)完成下面的问题,用ginput在图形上截取数据:l 绘制一个圆形并定义角度数组,范围在0到2之间,步长为/100。l 用ginput在圆周上截取两个点。l 用hold on保持图形,用直线连接刚刚截取两个点。l 用勾股定理计算两点间距离。m=0:pi/100:2*pi;x=sin(m);y=cos(m);plot(x,y)hold onaxis(-1,1,-1,1)a1,b1=ginput(1);a2,b2=ginput(1);c=a1 a2;d=b1 b2;plot(c,d)z=sqrt(a1-a2)2+(b1-b2)2)z = 1.9928一、逻辑函数find命令find用于查找矩阵中符合某种条件的元素。例如,美国海军学院要求招收学员的身高必须高于66,假设拟招学员的身高为:height=63 67 65 72 69 78 75;用find命令查找符合身高要求的元素序号:accept=find(height=66)accept = 2 4 5 6 7函数find输出矩阵中符合要求的元素序号。若需要查看身高的数值,可以用元素序号调出该元素height(accept)ans = 67 72 69 78 75为了增加输出结果的可读性,使用函数disp和fprintf显示输出结果:The following candidates meet the height requirementCandidate # 2 is 67 inches tallCandidate # 4 is 72 inches tallCandidate # 5 is 69 inches tallCandidate # 6 is 78 inches tallCandidate # 7 is 75 inches tall完整代码:height=63 67 65 72 69 78 75;accept=find(height=66)height(accept)disp(The following candidates meet the height requirement);fprintf(Candidate # %4.0f is %4.0f inches talln,accept;height(accept)使用逻辑运算符可以创建更加复杂的搜索条件。例如:除身高外,还要求学员的年龄必须在18岁到35岁之间。身高,英寸年 龄身高,英寸年 龄6318693667197834651875127220程序代码:applicants=63 18;67 19;65 18;72 20;69 36;78 34;75 12;pass=find(applicants(:,1)=66 & applicants(:,2)=18 & applicants(:,2)98.6) row,col=find(temp98.6) fprintf(Patient %4.0f at station %4.0f had a temp of %6.1f n,row,col,temp(element)二、选择结构(1)简单的if语句 if语句的语法结构: if 逻辑表达式 程序行 end如果比较结果(逻辑表达式)为true,那么执行if语句和end语句之间的程序代码。若比较结果为false,则程序直接跳转到end之后的语句。(2)if/else结构 在if/else结构中,若条件满足,则执行某段程序;若条件不满足,则执行另外一段程序。例如:在编写计算变量x对数的程序。根据初等数学中的概念可知函数log的输入参数必须大于0。在程序中使用if/else结构,保证输入参数为正数时才计算x的对数值。若输入参数为0或负数,则输出错误信息:if x0 y=log(x)else disp(The input to the log function must be postive)end如果x为矩阵,则只有当矩阵中所有元素都满足条件时,比较结果才为true。 Eg: 如果输入 x=0:0.5:2; 则因为输入向量并非所有元素都大于0,因此则Matlab会跳转到else部分,输出错误信息。在if/else语句中使用矢量会有很大的局限性,因此最好使用标量提 示在程序中,使用函数beep可以发出嘟嘟,用于提示用户出现错误。 x=input(Enter a value of x greater than 0: );if x0 y=log(x)else beep disp(The input to the log function must be positive)end(3)elseif结构在if/else结构中如果有多层嵌套,就会很难判断到底应该执行哪段程序。如果在程序中使用函数elseif,程序代码就会变得更容易理解。下面这段程序可以根据申请人的年龄判定是否发放驾驶执照:age=input(Enter a value of age: )if age16 disp(Sorry-Youll have to wait)elseif age18 disp(You may have a youth license)elseif age70 disp(You may have a standard license)else disp(Drivers over 70 require a special license)end在这个例子中,Matlab首先检查申请人年龄是否小于16岁即age16。如果表达式为true,则执行下一条语句,显示信息Sorry-Youll have to wait,然后退出if结构。如果比较结果为false,Matlab对后面的elseif语句进行判断,检查年龄是否小于18岁即age18。如果elseif比较结果为true,则显示You may have a youth license,。注:在这段程序中,如果age是标题就很容易理解。如果age为矩阵,则要求矩阵中所有元素必须都满足条件。假如:年龄矩阵为age=15 17 25 55 75矩阵中并非所有元素都满足条件,因此第一个判断语句if age16为false。同理,第二个判断语句 esleif age18和第三个判断语句esleif age70都是false。最后只能输出Drivers over 70 require a special license,这样结果就会使符合条件的申请人得不到驾驶执照。提 示初学者常常会把if语句中的条件写得过于烦琐。在前面的例子中,第二个条件语句用age18表示就足够了,不需要表示成age=16,因为当程序运行到这种语句时,申请人的年龄不可能小于16岁。如果非要按照类似的方式书写条件语句,就会得到错误的结果。age=input(Enter a value of age: )if age16 disp(Sorry-Youll have to wait)elseif age16 disp(You may have a youth license)elseif age18 disp(You may have a standard license)elseif age70 disp(Drivers over 70 require a special license)end当age=16,18或70时,会输出错误结果。一般来说,elseif结构适用于标量,find适用于矩阵。在下面的例子中,用find对年龄矩阵进行分类,结果用数据表格的形式输出:age=input(Enter a value of age: )set1=find(age=16&age=18&age=70);fprintf(Sorry-Youll have to wait-youre only %3.0fn,age(set1)fprintf(You may have a youth license because youre %3.0fn,age(set2)fprintf(You may have a standard license because youre %3.0fn,age(set3)fprintf(Drivers over 70 require a special license.Youre %3.0fn,age(set4)15 17 65 75Sorry-Youll have to wait-youre only 15You may have a youth license because youre 17You may have a standard license because youre 65Drivers over 70 require a special license.Youre 75(4)switch/case结构在Matlab中,switch/case结构可以根据一个给定参数的不同取值,执行不同的命令。它和if/else/elseif类似,都属于条件分支结构。凡是能够用if/else/elseif结构实现的程序功能都可以用switch/case结构实现。而且用switch/case结构实现程序代码更容易理解。switch/case结构和elseif结构的最大区别在于判断的条件既可以是标题也可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论