第三讲 MATLAB 7程序设计、数据文件和符号推导

上传人:r****d 文档编号:195288275 上传时间:2023-03-16 格式:PPT 页数:120 大小:768.50KB
收藏 版权申诉 举报 下载
第三讲 MATLAB 7程序设计、数据文件和符号推导_第1页
第1页 / 共120页
第三讲 MATLAB 7程序设计、数据文件和符号推导_第2页
第2页 / 共120页
第三讲 MATLAB 7程序设计、数据文件和符号推导_第3页
第3页 / 共120页
资源描述:

《第三讲 MATLAB 7程序设计、数据文件和符号推导》由会员分享,可在线阅读,更多相关《第三讲 MATLAB 7程序设计、数据文件和符号推导(120页珍藏版)》请在装配图网上搜索。

1、天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院天津大学机械工程学院科学计算工具软件科学计算工具软件科学计算工具软件MATLAB 7天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-152天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学

2、机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-153n M文件文件n 程序控制结构程序控制结构n 函数文件函数文件n 程序举例程序举例n 程序调试程序调试天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1543.1M文件文件文件概述文件概述 用用MATLAB语言编写的程序,称为语言编写的程序,称为M文件。文件

3、。M文件可以根据调用方式的不同分文件可以根据调用方式的不同分为两类:为两类:命令文件命令文件(Script File)和和函数文件函数文件(Function File)。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-155例例 分别建立命令文件和函数文件,将华分别建立命令文件和函数文件,将华 氏温度氏温度f转换为摄氏温度转换为摄氏温度c。程序程序1:首先建立命令文件并以文件名首先建立命令文件并以文件名f2c.m存盘存盘。

4、clear;%去除工作空间中的变量去除工作空间中的变量f=input(Input Fahrenheit temperature:);c=5*(f-32)/9 然后在然后在MATLAB的命令窗口中输入的命令窗口中输入f2c,将将会执行该命令文件,执行情况为:会执行该命令文件,执行情况为:Input Fahrenheit temperature:73c=22.7778天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-156程序程

5、序2:首先建立函数文件首先建立函数文件f2c1.m。function c=f2c(f)c=5*(f-32)/9 然后在然后在MATLAB的命令窗口调用该函数文件的命令窗口调用该函数文件。clear;y=input(Input Fahrenheit temperature:);x=f2c1(y);输出情况为输出情况为:Input Fahrenheit temperature:70 x=21.1111天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学

6、院力学系2023-3-1573.1.2 M文件的建立与翻开文件的建立与翻开 M文件是一个文本文件,它可以用任何文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最编辑程序来建立和编辑,而一般常用且最为方便的是使用为方便的是使用MATLAB提供的文本编辑提供的文本编辑器。器。1.建立新的建立新的M文件文件 为建立新的为建立新的M文件,启动文件,启动MATLAB文本编文本编辑器有辑器有3种方法:种方法:(1)菜单操作。从菜单操作。从MATLAB主窗口的主窗口的File菜菜单中选择单中选择New菜单项,再选择菜单项,再选择Script或或Function,屏幕上将出现,屏幕上将出现M

7、ATLAB 文本编文本编辑器窗口。辑器窗口。(2)命令操作。在命令操作。在MATLAB命令窗口输入命命令窗口输入命令令edit,启动,启动MATLAB文本编辑器后,输文本编辑器后,输入入M文件的内容并存盘。文件的内容并存盘。(3)命令按钮操作。单击命令按钮操作。单击MATLAB主窗口工主窗口工具栏上的具栏上的new Script 命令按钮,启动命令按钮,启动MATLAB文本编辑器后,输入文本编辑器后,输入M文件的内文件的内容并存盘。容并存盘。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学

8、系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1582.翻开已有的翻开已有的M文件文件 翻开已有的翻开已有的M文件,也有文件,也有3种方法:种方法:(1)菜单操作。从菜单操作。从MATLAB主窗口的主窗口的File菜菜单中选择单中选择Open命令,那么屏幕出现命令,那么屏幕出现Open对对话框。话框。(2)命令操作。在命令操作。在MATLAB命令窗口输入命命令窗口输入命令:令:edit 文件名,那么翻开指定的文件名,那么翻开指定的M文件。文件。(3)命令按钮操作。单击命令按钮操作。单击MATLAB主窗口工主窗口工具栏上的具栏上的Open File命令按钮,再从弹出的命令按

9、钮,再从弹出的对话框中选择所需翻开的对话框中选择所需翻开的M文件。文件。(4)直接点击直接点击current folder下的下的.m文件。文件。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1593.2 程序控制结构程序控制结构3.2.1 顺序结构顺序结构1.数据的输入举例数据的输入举例3-2examp3_2.m 从键盘输入数据,那么可以使用从键盘输入数据,那么可以使用input函数来进行,该函数的调用函数来进行,该函

10、数的调用格式为:格式为:A=input(提示信息,选项提示信息,选项);其中提示信息为一个字符串,用于其中提示信息为一个字符串,用于提示用户输入什么样的数据。提示用户输入什么样的数据。如果在如果在input函数调用时采用函数调用时采用s选项选项,那么允许用户输入一个字符串。,那么允许用户输入一个字符串。例如,想输入一个人的姓名,可采例如,想输入一个人的姓名,可采用命令:用命令:xm=input(Whats your name?,s);天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大

11、学机械工程学院力学系天津大学机械工程学院力学系例例3-2examp3_2.ma=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a)examp3_2.m:examp3_2a=?1b=?2c=?3x=-1.0000+1.4142i -1.0000-1.4142imatlab:天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学

12、系2023-3-15112.数据的输出举例数据的输出举例3-3examp3_3.m MATLAB提供的命令窗口输出函提供的命令窗口输出函数主要有数主要有 disp函数,其调用格式为函数,其调用格式为:disp(输出项输出项)其中输出项既可以为字符串,也其中输出项既可以为字符串,也可以为矩可以为矩阵。阵。A=Hello,MATLAB;disp(A)examp3_3.m examp3_3Hello,MATLABmatlab:天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院

13、力学系天津大学机械工程学院力学系2023-3-1512例例3-4 输入输入x,y的值,并将它们的值互的值,并将它们的值互换后输出。换后输出。程序如下:程序如下:x=input(Input x please.);y=input(Input y please.);z=x;x=y;y=z;disp(x);disp(y);examp3_4Input x please.4Input y please.5 5 4examp3_4.mmatlab:天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大

14、学机械工程学院力学系天津大学机械工程学院力学系2023-3-15133.程序的暂停程序的暂停 暂停程序的执行可以使用暂停程序的执行可以使用pause函数,函数,其调用格式为:其调用格式为:pause(延迟秒数延迟秒数)如果省略延迟时间,直接使用如果省略延迟时间,直接使用pause,那么将那么将暂停程序,直到用户按任一键后程序继暂停程序,直到用户按任一键后程序继续执续执行。行。假设要强行中止程序的运行可使用假设要强行中止程序的运行可使用Ctrl+C命命令。令。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学

15、机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15143.2.2 选择结构选择结构 1.if语句语句 在在MATLAB中,中,if语句有语句有3种格式。种格式。(1)单分支单分支if语句:语句:if 条件条件 语句组语句组 end 当条件成立时,那么执行语句组,执行当条件成立时,那么执行语句组,执行完之完之后继续执行后继续执行if语句的后继语句,假设条语句的后继语句,假设条件不成件不成立,那么直接执行立,那么直接执行if语句的后继语句。语句的后继语句。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天

16、津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1515 (2)双分支双分支if语句:语句:if 条件条件 语句组语句组1 else 语句组语句组2 end 当条件成立时,执行语句组当条件成立时,执行语句组1,否那么执行,否那么执行语句组语句组2,语句组,语句组1或语句组或语句组2执行后,再执执行后,再执行行if语句的后继语句。语句的后继语句。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津

17、大学机械工程学院力学系2023-3-1516例例3-5 计算分段函数的值。计算分段函数的值。程序如下:程序如下:x=input(请输入请输入x的值的值:);if x examp3_5请输入请输入x的值的值:5y=1.1562examp3_5.mmatlab:天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1517if 条件条件1 语句组语句组1 elseif 条件条件2 语句组语句组2 elseif 条件条件m 语句组语句

18、组m else 语句组语句组n end语句用于实现多分支选择结构。语句用于实现多分支选择结构。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15182.switch语句语句 switch语句根据表达式的取值不同,分别执行不语句根据表达式的取值不同,分别执行不同的语句,其语句格式为:同的语句,其语句格式为:switch 表达式表达式 case 表达式表达式1 语句组语句组1 case 表达式表达式2 语句组语句组2 天津大

19、学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1519 当表达式的值等于表达式当表达式的值等于表达式1 1的值时,的值时,执行语句组执行语句组1 1,当表达式的值等于表达式,当表达式的值等于表达式2 2的值时,执行语句组的值时,执行语句组2 2,当表达式,当表达式的值等于表达式的值等于表达式m的值时,执行语句组的值时,执行语句组m,当表达式的值不等于,当表达式的值不等于case所列的表所列的表达式的值时,执行语句组达式的值时,

20、执行语句组n n。当任意一个。当任意一个分支的语句执行完后,直接执行分支的语句执行完后,直接执行switch语句的下一句语句的下一句。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1520例例3-6 某商场对顾客所购置的商品实行打某商场对顾客所购置的商品实行打折销售,标准如下折销售,标准如下(商品价格用商品价格用price来表来表示示):price200 没有折扣没有折扣 200price500 3%折扣折扣 500pr

21、ice1000 5%折扣折扣 1000price2500 8%折扣折扣 2500price examp3_6请输入商品价格请输入商品价格55price=55examp3_6.m天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15223.try语句语句 语句格式为:语句格式为:try 语句组语句组1 catch 语句组语句组2 end try语句先试探性执行语句组语句先试探性执行语句组1,如果语,如果语句组句组1在执行过程中

22、出现错误,那么将错误在执行过程中出现错误,那么将错误信息赋给保存的信息赋给保存的lasterr变量,并转去执行语变量,并转去执行语句组句组2。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1523例例3-7 矩阵乘法运算要求两矩阵的维数相容,矩阵乘法运算要求两矩阵的维数相容,否那么会出错。先求两矩阵的乘积,假设否那么会出错。先求两矩阵的乘积,假设出错,那么自动转去求两矩阵的点乘。出错,那么自动转去求两矩阵的点乘。程序如下

23、:程序如下: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%显示出错原因显示出错原因 examp3_7C=7 16 27 40 55 72ans=Error using=mtimesInner matrix dimensions must agree.天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15243.2.3 循环结构循环结构1

24、.for语句语句 for语句的格式为语句的格式为:for 循环变量循环变量=表达式表达式1:1:表达式表达式2:2:表达式表达式3 3 循环体语句循环体语句 end 其中表达式其中表达式1 1的值为循环变量的初值,表的值为循环变量的初值,表达式达式2 2的值为步长,表达式的值为步长,表达式3 3的值为循环变的值为循环变量的终值。步长为量的终值。步长为1 1时,表达式时,表达式2 2可以省略可以省略。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程

25、学院力学系2023-3-1525例例3-8 一个三位整数各位数字的立方和等于一个三位整数各位数字的立方和等于该数本身那么称该数为水仙花数。输出全该数本身那么称该数为水仙花数。输出全部水仙花数。部水仙花数。程序如下:程序如下:for m=100:999 m1=fix(m/100);%求求m的百位数字的百位数字 m2=rem(fix(m/10),10);%求求m的十位数字的十位数字 m3=rem(m,10);%求求m的个位数字的个位数字 if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m)end end examp3_8 153 370 371 407天津大学机械工程学院

26、力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1526例例3-9 求求y的值。的值。程序如下:程序如下:y=0;n=100;for i=1:n y=y+1/(2*i-1);end y examp3_9y=3.2843天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-152

27、7 在实际在实际MATLAB编程中,采用循环语句编程中,采用循环语句会降低其执行速度,所以前面的程序通常会降低其执行速度,所以前面的程序通常由下面的程序来代替:由下面的程序来代替:n=100;i=1:2:2*n-1;y=sum(1./i);y天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1528 for语句更一般的格式为语句更一般的格式为:for 循环变量循环变量=矩阵表达式矩阵表达式 循环体语句循环体语句 end 执行

28、过程是依次将矩阵的各列元素赋给循执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列环变量,然后执行循环体语句,直至各列元素处理完毕元素处理完毕。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1529例例3-10 写出以下程序的执行结果。写出以下程序的执行结果。s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a s=s+k;end disp(s);exa

29、mp3_10s=39 48 57 66天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15302.while语句语句 while语句的一般格式为:语句的一般格式为:while(条件条件)循环体语句循环体语句 end 其执行过程为:假设条件成立,那么执其执行过程为:假设条件成立,那么执行循环体语句,执行后再判断条件是否成行循环体语句,执行后再判断条件是否成立,如果不成立那么跳出循环。立,如果不成立那么跳出循环。天津大学机械工

30、程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1531例例3-11 从键盘输入假设干个数,当输入从键盘输入假设干个数,当输入0时结束输入,求这些数的平均值和它时结束输入,求这些数的平均值和它们之和。们之和。程序如下:程序如下:sum=0;cnt=0;val=input(Enter a number(end in 0):);while(val=0)sum=sum+val;cnt=cnt+1;val=input(Enter a numbe

31、r(end in 0):);end if(cnt 0)sum mean=sum/cnt end examp3_11Enter a number(end in 0):5Inter a number(end in 0):6Inter a number(end in 0):0sum=11mean=5.5000天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15323.break语句和语句和continue语句语句 与循环结构相关

32、的语句还有与循环结构相关的语句还有break语句和语句和 continue语句。它们一般与语句。它们一般与ifif语句配合使语句配合使用。用。break语句用于终止循环的执行。当在循语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环环体内执行到该语句时,程序将跳出循环,继续,继续执行循环语句的下一语句执行循环语句的下一语句。continue语句控制跳过循环体中的某些语语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,将跳过循环体中所有剩下的语句,继续下继续下一次循环。一次循环。天津大学机械工程学院力

33、学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1533例例3-12 求求100,200之间第一个能被之间第一个能被21整除整除的整数。的整数。程序如下:程序如下:for n=100:200 if rem(n,21)=0 continue end break end n天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力

34、学系天津大学机械工程学院力学系2023-3-15344.循环的嵌套循环的嵌套 如果一个循环结构的循环体又包括一个循环如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构,就称为循环的嵌套,或称为多重循环结构。结构。例例3-13 假设一个数等于它的各个真因子之和,假设一个数等于它的各个真因子之和,那么称该数为完数,如那么称该数为完数,如6=1+2+3,所以,所以6是完是完数。求数。求1,500之间的全部完数。之间的全部完数。for m=1:500 s=0;for k=1:m/2 if rem(m,k)=0 s=s+k;end end if m=s disp(m);en

35、d end examp3_13 6 28 496天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15353.3 函数文件函数文件3.3.1 函数文件的根本结构函数文件的根本结构 函数文件由函数文件由function语句引导,其根语句引导,其根本结构为:本结构为:function 输出形参表输出形参表=函数函数名名(输入形参表输入形参表)注释说明局部注释说明局部 函数体语句函数体语句 其中以其中以function开头的一行为

36、引导行开头的一行为引导行,表示该,表示该M文件是一个函数文件。函文件是一个函数文件。函数名的命名规那么与变量名相同。输数名的命名规那么与变量名相同。输入形参为函数的输入参数,输出形参入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于为函数的输出参数。当输出形参多于一个时,那么应该用方括号括起来。一个时,那么应该用方括号括起来。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1536例例3-14 编写函数文件求

37、半径为编写函数文件求半径为r r的圆的面积的圆的面积和周长。和周长。函数文件如下:函数文件如下:function s,p=fcircle(r)%CIRCLE calculate the area and perimeter of a circle of radii r%r 圆半径圆半径%s 圆面积圆面积%p 圆周长圆周长 s=pi*r*r;p=2*pi*r;f,g=examp3_14(5)f=78.5398g=31.4159 f,g=fcircle(5)?Undefined function or method fcircle forinput arguments of type double

38、.examp3_14.m调用函数文件,需要调用函数文件,需要用用.m文件名,而不是函文件名,而不是函数名,最好将文件名和数名,最好将文件名和函数名一致。函数名一致。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15373.3.2 函数调用函数调用 函数调用的一般格式是:函数调用的一般格式是:输出实参表输出实参表=函数名函数名(输入实参表输入实参表)要注意的是,函数调用时各实参出要注意的是,函数调用时各实参出现的顺序、个数

39、,应与函数定义时形现的顺序、个数,应与函数定义时形参的顺序、个数一致,否那么会出错参的顺序、个数一致,否那么会出错。函数调用时,先将实参传递给相应。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再的形参,从而实现参数传递,然后再执行函数的功能。执行函数的功能。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1538例例3-15 利用函数文件,实现直角坐标利用函数文件,实现直角坐标(x,y)(x,y)与与 极坐

40、标极坐标(,)(,)之间的转换之间的转换。函数文件函数文件tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用调用tran.m的命令文件的命令文件examp3_15.m:x=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rho the examp3_15Please input x=:5Please input y=:4rho=6.4031the=0.6747天津大学机械工程学院力学系天津大学机械工程学院力学系天津大

41、学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1539 在在MATLAB中,函数可以嵌套调用,即中,函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它一个函数可以调用别的函数,甚至调用它自身。一个函数调用它自身称为函数的递自身。一个函数调用它自身称为函数的递归调用。归调用。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院

42、力学系2023-3-1540例例3-16 利用函数的递归调用,求利用函数的递归调用,求n!。!。n!本身就是以递归的形式定义的本身就是以递归的形式定义的:显然,求显然,求n!需要求需要求(n-1)!,这时可采用递归这时可采用递归调用。递归调用函数文件调用。递归调用函数文件factor.m如下如下:function f=factor(n)if n examp3_16(5)ans=120天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系202

43、3-3-15413.3.3 函数参数的可调性函数参数的可调性 在调用函数时,在调用函数时,MATLAB用两个永久用两个永久变量变量nargin和和nargout分别记录调用该函分别记录调用该函数时的输入实参和输出实参的个数。只要数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理参数个数,从而决定函数如何进行处理。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学

44、院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1542例例3-17 nargin用法例如。用法例如。函数文件函数文件examp.m:function fout=examp(a,b,c)if nargin=1 fout=a;elseif nargin=2 fout=a+b;elseif nargin=3 fout=(a*b*c)/2;end 命令文件命令文件examp3_17.m:x=1:3;y=1;2;3;examp(x)examp(x,y)examp(x,y,3)examp3_17ans=1 2 3ans=2 4 6ans=21天津大学机

45、械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15433.3.4 全局变量与局部变量全局变量与局部变量 全局变量用全局变量用global命令定义,格式为:命令定义,格式为:global 变量名变量名例例3-18 全局变量应用例如。全局变量应用例如。先建立函数文件先建立函数文件wadd.m,该函数将输入的,该函数将输入的参数加权相加。参数加权相加。function f=wadd(x,y)global ALPHA BETA f=ALP

46、HA*x+BETA*y;在命令窗口中输入:在命令窗口中输入:global ALPHA BETA ALPHA=1;BETA=2;s=wadd(1,2)天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15443.4 程序调试程序调试3.4.1 程序调试概述程序调试概述 一般来说,应用程序的错误有两类,一般来说,应用程序的错误有两类,一类是语法错误,另一类是运行时的错一类是语法错误,另一类是运行时的错误。语法错误包括词法或文法的

47、错误,误。语法错误包括词法或文法的错误,例如函数名的拼写错、表达式书写错等例如函数名的拼写错、表达式书写错等。程序运行时的错误是指程序的运行结程序运行时的错误是指程序的运行结果有错误,这类错误也称为程序逻辑错果有错误,这类错误也称为程序逻辑错误误。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15453.5.2 调试器调试器 1.Debug菜单项菜单项 该菜单项用于程序调试,需要与该菜单项用于程序调试,需要与Breakp

48、oints菜单项配合使用。菜单项配合使用。2.Breakpoints菜单项菜单项 该菜单项共有该菜单项共有6个菜单命令,前两个个菜单命令,前两个是用于在程序中设置和去除断点的,是用于在程序中设置和去除断点的,后后4个是设置停止条件的,用于临时停个是设置停止条件的,用于临时停止止M文件的执行,并给用户一个检查文件的执行,并给用户一个检查局部变量的时机,相当于在局部变量的时机,相当于在M文件指文件指定的行号前参加了一个定的行号前参加了一个keyboard命令命令。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大

49、学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系MATLAB为用户提供了简单、明快的语法,功能强大的内置函数,丰富多样的工具箱,可以满足各专业领域的需要。利用MATLAB,用户只需很少的代码就能实现一些复杂的功能。用户也许希望自己编写的程序脱离MATLAB环境独立运行,或嵌入到其他开发环境如VS中的工程中,或嵌入到PPT中加以展示,这正是MATLAB编译器所要完成的工作之一。基于程序执行效率的考虑,也是使用MATLAB编译器的一个主要原因。我们知道MATLAB程序语言是一种边解释边执行的程序语言,其执行效率远低于二进制代码。通过MATLAB编译器,用户可以将MATLAB

50、程序转换成二进制代码形式存在的可执行程序,如独立MATLAB环境的可执行程序、函数库DLL或组件COM、ActiveX等等,从而大大提升执行效率。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系MATLAB Compiler 4MATLAB Compiler 4是在第三方C/C+编译器的支持下,将MATLAB的M函数文件转换为可独立执行的应用程序、函数库或组件的应用程序发布工具。MATLAB Compiler 4与早期版本的MATLAB

51、 Compiler有所不同,早期的MATLAB Compiler只是将M函数文件转变成标准C/C+源代码,然后由第三方C/C+编译器将其编译成独立可执行的应用程序、函数库或组件等。MATLAB Compiler 4由三个组件构成,即MATLAB Compiler、MATLAB Component RuntimeMCR和Component Technology FileCTF。其中MATLAB Compiler组件是MATLAB Compiler 4提供给用户用于应用程序发布的界面,是包含假设干交互式命令和命令行开关选项的工具命令行。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机

52、械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系编译器的安装和设置在使用MATLAB Compiler之前用户需要正确地安装MATLAB、MATLAB Compiler及一个MATLAB Compiler支持的第三方C/C+编译器,而且需要对MATLAB Compiler进行合理的配置。是MATLAB外部应用程序运行必需的环境支持。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械

53、工程学院力学系天津大学机械工程学院力学系安装编译器MATLAB Compiler 4至少需要MATLAB 7.0的支持,在MATLAB安装过程中要确保“MATLAB Compiler被选中默认情况。MATLAB对第三方C/C+编译器的支持是比较广泛的,下面列出了Windows平台下MATLAB Compiler 4支持的常用第三方C/C+编译器。Lcc C:MATLAB 7.0自带的编译器,仅能够编译C代码,不能编译C+代码。Borland C+:适用版本为5.3、5.4、5.5和5.6。Microsoft Visual C/C+(MSVC):适用版本为6.0、7.0和7.1。用户可以通过在命

54、令窗口输入指令mbuild -setup查看编译器支持的第三方C/C+编译器。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系脚本文件与函数文件的转换针对MATLAB Compiler不能处理脚本文件的问题,用户可以事先将脚本文件转

55、换为M函数文件,然后利用编译器编译该M函数文件。只需在脚本文件的开头添加一行函数声明即可。下面仅通过一个简单的例如说明如何使用编译器编译脚本文件。强大的图形功能和灵活的数据可视化能力是MATLAB流行的重要原因。将包含绘图指令的MATLAB应用程序转换为独立可执行应用程序。function plot0 x=1:10y=x.2plot(x,y)天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系function myprime0t=3;y=1

56、:4;mu=1/82.45;mus=1-mu;r1=norm(y(1)+mu,y(3);%Distance to the earthr2=norm(y(1)-mus,y(3);%Distance to the moonyp(1)=y(2);yp(2)=2*y(4)+y(1)-mus*(y(1)+mu)/r13-mu*(y(1)-mus)/r23;yp(3)=y(4);yp(4)=-2*y(2)+y(3)-mus*y(3)/r13-mu*y(3)/r23;yp=yp天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天

57、津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系编译生成dll动态链接库天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系Matlab&C+.m文件和.C文件,Matlab&Fortran.m文件和.f文件混合编译。形成.exe或.dll文件混合编译天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学

58、机械工程学院力学系天津大学机械工程学院力学系2023-3-1555n 文件的翻开与关闭文件的翻开与关闭n 文件的读写操作文件的读写操作n 数据文件定位数据文件定位天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1556 文件数据格式有两种形式,一是二进制文文件数据格式有两种形式,一是二进制文件,二是文本文件。在翻开文件时需要进件,二是文本文件。在翻开文件时需要进一步指定文件格式类型,即指定是二进制一步指定文件格式类型,即指

59、定是二进制文件还是文本文件。文件还是文本文件。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15574.1.1 文件的翻开文件的翻开(举例举例examp4_1.m)fopen函数的调用格式为:函数的调用格式为:fid=fopen(文件名,翻开方式文件名,翻开方式)其中,文件名用字符串形式,表示待翻开其中,文件名用字符串形式,表示待翻开的数据文件。常见的翻开方式有:的数据文件。常见的翻开方式有:r表示表示对翻开的文件读数据

60、,对翻开的文件读数据,w表示对翻开的文表示对翻开的文件写数据,件写数据,a表示在翻开的文件末尾添加表示在翻开的文件末尾添加数据。数据。fid用于存储文件句柄值,句柄值用来标识用于存储文件句柄值,句柄值用来标识该数据文件,其他函数可以利用它对该数该数据文件,其他函数可以利用它对该数据文件进行操作。据文件进行操作。fid=fopen(std.dat,r)天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1558 文件在进行完读、

61、写等操作后,应及时关闭,文件在进行完读、写等操作后,应及时关闭,以保证文件的平安可靠。关闭文件用以保证文件的平安可靠。关闭文件用fclose函数,函数,调用格式为:调用格式为:sta=fclose(fid)该函数关闭该函数关闭fid所表示的文件。所表示的文件。sta表示关闭文件表示关闭文件操作的返回代码,假设关闭成功,返回操作的返回代码,假设关闭成功,返回0,否那么,否那么返回返回1。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系20

62、23-3-15594.2 文件的读写操作文件的读写操作4.2.1 二进制文件的读写操作二进制文件的读写操作1.读二进制文件举例读二进制文件举例examp4_2.m fread 函数可以读取二进制文件的数函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式据,并将数据存入矩阵。其调用格式为:为:A,COUNT=fread(fid,size,precision)其中其中A用于存放读取的数据,用于存放读取的数据,COUNT返回所读取的数据元素个数,返回所读取的数据元素个数,fid为文为文件句柄,件句柄,fid=fopen(std.dat,r);A,COUNT=fread(fid,3,long)

63、sta=fclose(fid)天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-1560 size为可选项,假设不选用那么读取整个文件内为可选项,假设不选用那么读取整个文件内容,假设选用那么它的值可以是以下值:容,假设选用那么它的值可以是以下值:(1)N表示读取表示读取N个元素到一个列向量。个元素到一个列向量。(2)Inf表示读取整个文件。表示读取整个文件。(3)M,N表示读数据到表示读数据到MN的矩阵中,数据按的矩阵中,数

64、据按列存放。列存放。precision代表读写数据的类型代表读写数据的类型天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系2023-3-15612.写二进制文件举例写二进制文件举例examp4_3.m fwrite 函数按照指定的数据类型将矩函数按照指定的数据类型将矩阵中阵中 的元素写入到文件中。其调用格式为的元素写入到文件中。其调用格式为:COUNT=fwrite(fid,A,precision)其中,其中,COUNT返回所写的数据元

65、素返回所写的数据元素个个 数,数,fid为文件句柄,为文件句柄,A用来存放写入用来存放写入文件文件 的数据,的数据,precision用于控制所写数据用于控制所写数据的类的类 型,其形式与型,其形式与fread函数相同。函数相同。天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系天津大学机械工程学院力学系例:建立一数据文件例:建立一数据文件test.dattest.dat,用于存放矩阵,用于存放矩阵A A的数据的数据 A=-0.6515 -0.2727 -0.43

66、54 -0.3190 -0.9047 A=-0.6515 -0.2727 -0.4354 -0.3190 -0.9047 -0.7534 -0.4567 -0.3212 -0.4132 -0.7534 -0.4567 -0.3212 -0.4132 -0.35830.3583 -0.9264 -0.8173 -0.7823 -0.3265 -0.9264 -0.8173 -0.7823 -0.3265 -0.06310.0631 -0.1735 -0.7373 -0.0972 -0.3267 -0.1735 -0.7373 -0.0972 -0.3267 -0.62980.6298 -0.4768 -0.6773 -0.6574 -0.1923 -0.4768 -0.6773 -0.6574 -0.1923 -0.43890.4389Fid=fopen(test.dat,w)cnt=fwrite(Fid,A,float)fclose(Fid)程序段将矩阵A的数据以二进制浮点数格式写入文件test.dat中。Fid=fopen(test.dat,r)B,cnt=fread(Fid,5,5

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

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

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


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