Matlab第十讲教案_第1页
Matlab第十讲教案_第2页
Matlab第十讲教案_第3页
Matlab第十讲教案_第4页
Matlab第十讲教案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、西南科技大学本科生课程备课教案计算机技术在安全工程中的应用 Matlab入门及应用授课教师:徐中慧班 级:专 业:安全技术及工程第十章 MATLAB自定义函数课型:新授课 教具:多媒体教学设备,matlab教学软件一、目标与要求 通过解说与实例练习,掌握matlab创建函数M文件的方法 掌握matlab中全局变量与局部变量的定义与用法 通过解说与实例练习,掌握在matlab主函数M文件中创建子函数 在实例练习过程中,回顾利用伪码编写简单程序的方法 掌握通过创建matlab函数M文件解决生活中的计算问题二、教学重点与难点 本堂课教学的重点在于引导学生掌握matlab中函数M文件的创建及应用。本堂

2、课的难点在于理解matlab中函数M文件主函数与子函数的区别及调用,局部变量与全局变量的定义与应用范围的区别。三、教学方法 本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。1) 通过讲授法向学生讲述创建matlab函数M文件的基本方法、全局变量与局部变量的定义及用法等。2) 通过运用多媒体设备现场演示matlab创建函数M文件的应用实例。3) 在掌握创建matlab函数M文件基本方法的基础上,采用练习法引导学生创建函数M文件解决实际问题。四、教学内容 课 后 习 题 五(1)拉力测试装置在测试过程中,被测样本受均匀外力的作用产生形变。下图中显示的是一组拉力测试

3、数据。根据以下公式计算应力与形变:其中,是产生的应力,单位为lbf/in2(psi);F为施加的外力,单位为lbf;A为样本的截面积,单位为in2;为产生的形变,单位为in/in;为样本的长度;为样本的原始长度。 (a)测试样本是直径为0.505in的金属杆,根据直径可以计算出金属杆的截面积,进一步利用所提供的数据计算金属杆的应力和形变。(b)以形变为x轴,应力为y轴,作x-y线图。用黑色实线连接各数据点,并用圆圈标出各实测数据点。(c)添加标题和坐标轴的标注。(d)屈服应力或屈服点是指图形从陡峭的直线变成平滑曲线所对应的点,在屈服点附近测试样本的特性会发生显著变化。在屈服点之前,测试样本发生

4、弹性形变,即当外力消失时,形变也消失,与橡皮筋类似。若继续增大外力作用,则测试样本会发生永久变形,也称塑性变形。在图中对屈服点做出标注。拉力测试数据负 载长 度负 载长 度0277502.01016502.00286502.02034002.00493002.04052002.006101002.08068502.008104002.120程序代码:% 定义已知变量F=1650 3400 5200 6850 7750 8650 9300 10100 10400;L=2.002 2.004 2.006 2.008 2.010 2.020 2.040 2.080 2.120;L0=2;A=0.50

5、52*pi/4;% oneyinli=F./Axinbian=(L-L0)./L0% twoplot(yinli,xinbian,-ok)% threetitle(应力应变变化图),xlabel(yinli),ylabel(xinbian) % fourgtext(屈服点)(2)创建矢量x,范围在020 之间,步长为/100。矢量y和z分别等于在x-y坐标系中画出x和y的关系曲线。在极坐标系中画出x和y的关系曲线。画出x、y和z的三维曲线,并在图中添加标题和坐标轴标注。为了产生如下图所示的类似龙卷风的曲线应如何调整plot3中的输入参数,用comet3代替plot3绘制曲线。% onex=0:

6、pi/100:20*pi;y=x.*sin(x);z=x.*cos(x);plot(x,y)% twofigure(2)polar(x,y)% threefigure(3)plot3(x,y,z)xlabel(x),ylabel(y),zlabel(z),title(三维曲线)% fourfigure(4)plot3(z,y,x)xlabel(z),ylabel(y),zlabel(x),title(三维曲线)figure(5)comet3(z,y,x)(3)创建矢量x和y,数据变化范围从-5到+5,步长为0.5.用函数meshgrid将矢量x和y映射为两上新的二维矩阵X和Y,根据下述公式计算

7、矢量Z: 用函数mesh创建Z的三维图。 用函数surf创建Z的三维图。比较单个输入变量和三个输入变量(X,Y,Z)时输入结果的区别。 给输出的曲面图增加渲染阴影效果。 绘制Z的等高线图。 绘制Z的曲面图并加上等高线。% 变量定义x=-5:0.5:5;y=-5:0.5:5;X,Y=meshgrid(x,y);Z=sin(sqrt(X.2+Y.2);% onemesh(Z)% twofigure(2)subplot(2,2,1)surf(Z)subplot(2,2,2)surf(X,Y,Z)% threeshading interp% foursubplot(2,2,3)contour(X,Y,

8、Z)% fivesubplot(2,2,4)surfc(X,Y,Z) (1)导入课堂内容Matlab是一种基于函数的编程语言。函数就是用户输入参数,返回输出结果的程序。Matlab的有内置函数和自定义函数。内置函数主要包括三角函数、对数函数、统计分析函数等。Eg: 三角函数 sin、cos、asin、acos等Eg: sin(pi/2) ans = 1sin(90) ans = 0.8940由以上两段小程序可以看出matlab内置的三角函数 sin的输入参数形式只能是弧度,若输入角度则会显示错误的输出结果。在matlab软件的低版本内里没有自带输入参数为角度形式的内置正弦函数。我们可以通过编写

9、matlab自定义函数即创建函数M文件来实现这一功能。(2)函数M文件创建的语法自定义函数和matlab自定义函数的内置函数一样,具有相同的结构。函数中必须包括函数名、输入参数和输出结果三项。自定义函数在M文件中编写代码。第一行是函数的定义行,它应包括:n 引导词 functionn 输出变量n 函数名称n 输入变量一个函数的定义如下: function output=my_function(input)Matlab中函数的命名应遵循如下规则:l 函数名必须以字母开头l 可以包括字母、数字和下划线l 不能使用预留的名称l 长度没有限制,但是最好不要太长由此我们可以创建函数M文件来解决前一部分的

10、遗留问题:function output=sin_degree(x)output=sin(pi.*x./180); (3)多输入多输出函数 自定义函数也可以有多个输入参数和输出结果。一个函数的定义如下: function a,b,c,=my_function(x,y,z,)Eg: 余项函数rem(x,y)就是一个多输入函数。余项函数就是求除法运算中余数的函数,需要输入除数和被除数两个选项。(4)全局变量与局部变量全局变量是整个程序的变量。在命令窗口或脚本M文件中定义的变量都是全局变量。函数的M文件中所有变量都称为局部变量。在命令窗口或脚本M文件中不能访问自定义函数定义的变量。同理自定义函数中也

11、不能访问工作区定义的变量。也就是说函数必须是自包含的,即:程序中的信息仅能通过输入变量传递给函数,函数中的信息仅能通过输出变量传递给程序。(5)查看M文件代码Matlab中提供了两种函数类型。一种是内置函数,其程序代码是看不见的。另一种是M文件函数,它存储在程序提供的工具箱中,使用type命令可以查看M文件代码。函数sphere是Matlab中的实体模型函数,可以产生一个三维球体,查看其程序代码,输入 type sphere或type (sphere)(6)应用实例 例题:个人住房公积金贷款买房,还款额及利息计算n 个人买房申请住房公积金贷款,还款形式选择等额本金还款。5年以上贷款年利率为4.

12、5%,贷款本金为10万元,还款期限为10年。编写函数M文件计算每月还款额、总还款额和总利息,并将每月还款额输出到一个txt文件中n 等额本金还款计算公式:每月还款金额 = (贷款本金 / 还款月数)+(本金 已归还本金累计额)每月利率n 输入:贷款本金,贷款利率,贷款期限n 输出:每月还款额,总还款额,总利息 流程图和伪码通常在编写程序之前,要先画出程序的流程图或编写伪码,对程序进行设计。流程图就是以图形化的方法表现编程思路,伪码是用文字的形式对程序算法进行描述。在编写程序时,可以任意选择其中一种或两种方法对程序进行设计。在编写简单程序中,最好使用伪码的方法:u 用句子描述程序实现的步骤u 将

13、步骤转换成程序中的注释信息u 在注释行之间国入恰当的matlab程序代码 程序实现的步骤 定义函数M文件 计算每月应还本金额 计算每月的剩余本金 计算每月还款额 计算总还款额 计算总利息 输出计算结果到已经定义的txt文件中 将程序步骤转换为伪码%define functional M-file %calculate monthly principal for payment % calculate monthly surplus principal % calculate monthly payment % calculate the total payment % calculate th

14、e total interest % output calculated results matlab程序代码%define functional M-filefunction ZHK,ZLX=DEBJHK(BJ,DK_interestrate,DK_duration)%calculate monthly principal for paymentBJ_permonth=BJ./DK_duration;% calculate monthly surplus principalx=1:DK_duration;surplus_BJ=BJ-BJ_permonth.*x;% calculate mon

15、thly paymentMYHK=BJ_permonth+surplus_BJ.*DK_interestrate/12;% calculate the total paymentZHK=sum(MYHK);% calculate the total interestZLX=ZHK-BJ;% output calculated results y=fopen(result.txt,wt);fprintf(y,Zong huan kuan er:%8.3f yuann ,ZHK);fprintf(y,Zong li xi:%8.3f yuann ,ZLX);fprintf(y,Di %2.0f g

16、e yue huan kuan er wei: %8.3f yuann,x;MYHK);注:格式化输出函数fprintf的用法Eg: cows=2:5;fprintf(There are %5.2f cows in the pasture n,cows)There are 2.00 cows in the pasture There are 3.00 cows in the pasture There are 4.00 cows in the pasture There are 5.00 cows in the pasture上述代码中,函数fprintf的第一个参数包含一个占位符(%)。占位

17、符不但指定了输出的格式,还表明了变量输出的位置。程序代码中的%5.2f表明变量cows输出的格式。f表示用定点数格式显示。在使用函数fprintf时,初学者常犯的错误是忘记在占位符后输入类型域标识,如f,这样函数将不会正常工作,而且还不会给出错误提示。类型域还有其它显示格式:使用可选项width field和precision field 可以控制数据输出宽度和精度。Width field 必须是正的十进制整数,用于控制字符显示的最小宽度。Precision field 必须以点(.)开始,用于确定指数或定点数中小数点后的数字位数。例如: 上例中%5.2f 说明字符显示的最小宽度是5位,小数点

18、后有2位数字。上例中n是一种特殊格式命令,用于换行显示。还有一些其它的特殊格式命令:除了可以在命令窗口中输出格式化数据外,函数fprintf还可以把数据输出到文件中。首先创建输出文件,然后用函数fopen打开该文件,同时给打开的文件分配一个文件标识符(即文件的别名):file_id =fopen(my_output_file.txt,wt);其中,函数fopen的第一个输入参数是要打开的文件名。第二个输入参数是字符串wt,表示要对文件进行写操作。如果能正确打开这个输出文件,并且已经给该文件分配了文件标识符,就可以把这个文件标识符作为函数fprintf的第一个输入参数按照指定格式把数据写入到文件

19、中:fprintf(file_id, Some example output is %4.2f n , pi*1000)并在命令窗口返回写入数据的字节数。 (7)子函数n 在同一个文件中,除了主函数外还可以创建多个子函数。子函数只能被主函数调用。使用子函数有利于程序的模块化,能够使程序的可读性更强。n 每一个matlab的M文件只能有一个主函数,并且M文件名必须和主函数名相同。主函数之后可以定义任何合法的子函数,子函数的命名规则和变量的命名规则相同。%define functional M-filefunction ZHK,ZLX=DEBJHK00(BJ,DK_interestrate,DK_

20、duration)%calculate monthly principal for paymenta=BJ./DK_duration;% calculate monthly surplus principalx=1:DK_duration;b=BJ-a.*x;% calculate monthly interestratec= DK_interestrate/12;% calculate monthly paymentMYHK=zhihanshu(a, b,c);% calculate the total paymentZHK=sum(MYHK);% calculate the total i

21、nterestZLX=ZHK-BJ;% output calculated results y=fopen(result.txt,wt);fprintf(y,Zong huan kuan er:%8.3f yuann ,ZHK);fprintf(y,Zong li xi:%8.3f yuann ,ZLX);fprintf(y,Di %2.0f ge yue huan kuan er wei: %8.3f yuann,x;MYHK);function output=zhihanshu(BJ_permonth, surplus_BJ,interestrate_permonth)output=BJ_

22、permonth+surplus_BJ.* interestrate_permonth; (8)匿名函数和函数句柄、复合函数一般情况下,创建用户自定义函数,需要把函数存储起来以便将来编程使用。匿名函数是Matlab7中一种新的、简单的函数构造方法。用户可以直接在命令窗口或脚本M文件中定义和使用匿名函数。匿名函数更像一个定义的变量,只要不清空工作区,匿名函数都是有效的。下面的程序代码给出了一个匿名函数的例子:ln=(x) log(x)l 符号提示Matlab,ln是一个函数l 在符号后面紧接着定义了函数的输入参数l 最后定义函数关键概念:用户可以在M文件或命令窗口中定义匿名函数在程序中,匿名函数的用法和其它函数的用法相同。ln(10)ans=2.3026用户还可以给函数M文件创建函数句柄。创建函数M文件如下:

温馨提示

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

评论

0/150

提交评论