




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、m文件文件 所谓m文件就是由matlab语言编写的可在matlab语言环境下运行的程序源代码文件。matlab语言中的m文件可分为命令式(script)和函数式(function)两种形式。m文件可在matlab的程序编辑器中编写,也可在其他的文本编辑器中编写,并以“.m”为扩展名加以保存。 命令式文件命令式文件 命令式文件就是命令行的简单叠加,matlab会自动按顺序执行文件中的命令。值得注意的是,命令式文件在运行过程中可以调用matlab工作域内所有的数据,而且所产生的所有变量均为全局变量。回到本章目录回到本章目录 m文件就是由文件就是由matlab语言编写的可在语言编写的可在matlab
2、语言环境下运语言环境下运行的程序源代码文件。行的程序源代码文件。matlab语言中的语言中的m文件可分为命令式(文件可分为命令式(script)和函数式()和函数式(function)两种形式。)两种形式。m文件可在文件可在matlab的程的程序编辑器中编写,也可在其他的文本编辑器中编写,并以序编辑器中编写,也可在其他的文本编辑器中编写,并以“.m”为扩展名加以保存,这类文件的为扩展名加以保存,这类文件的第一行必须是一特殊字符第一行必须是一特殊字符function开始开始,格式为:,格式为: function y1,y2, =fun(x1,x2, ) fun是函数名,是函数名,x1,x2, 是
3、输入变量,是输入变量, y1,y2, 是输出变量。是输出变量。 m文件文件m文件建立方法:文件建立方法:1. 在在matlab中,点中,点:filenew m-file 2. 在编辑窗口中输入程序内容在编辑窗口中输入程序内容 3. 点点file save,存盘,存盘,m文件名必须文件名必须 与函数名一致与函数名一致.matlab的应用程序也以的应用程序也以m文件保存文件保存.存储函数式存储函数式m文件时文件名要与主函数名相一致。文件时文件名要与主函数名相一致。回到本章目录回到本章目录第一行:函数声明行function y = dfw1(r,p)res = r(1);p0 = p(1);y =
4、-sum(res); 输出参数函数名输入参数函数名要遵守matlab变量名的命名规则, m函数存盘时的文件名与函数名相同。从函数返回的惟一信息包含在输出参数中,要确保函数中包含一条给输出参数赋值的语句。回到本章目录回到本章目录函数式文件:function abcd(a,b)c=a+bd=b-a保存为abcd.m在工作窗口中调用:a=2;b=3,4,5,6;abcd(a,b)c = 5 6 7 8d = 1 2 3 4c %结果是什么?命令式文件:a=2;b=3 4 5 6;c=a+b;d=b-a;保存为:abcd.m在工作窗口中调用:abcd %文件名即可 cc = 5 6 7 8 dd =
5、1 2 3 4回到本章目录回到本章目录 函数变量及变量作用域函数变量及变量作用域 m文件的变量主要有输入变量、输出变量及函数内部变量。输入变量相当于函数的入口数据,是一个函数操作的主要对象。函数的作用就是对输入变量进行加工以实现一定的功能。函数的输入变量为形式参数,即只是传递变量的值而不是变量的地址,函数对输入变量的一切的操作和修改如果不依靠输出变量传出的话,将不会影响工作空间 中该变量的值。 matlab语言提供了函数nargin来控制输入变量的个数,即可以实现不定参数输入的操作。例如:在函数test1中,如果调用过程时只提供一个输入变量,则求该输入变量的模;如果是两个输入变量,则求两个输入
6、变量的和回到本章目录回到本章目录%如果调用过程时只提供一个输入变量,则求该输入变量%的模; 如果是两个输入变量,则求两个输入变量的和function c=test1(a,b)if nargin=1 c=norm(a);elseif nargin=2 c=a+b;end在工作窗口调用: a=2 3 4a = 2 3 4 test1(a)ans = 5.3852 b=3; test1(a,b)ans = 5 6 7回到本章目录回到本章目录 同时,matlab语言还提供了另一个针对输入变量的函数varargin。该函数可以实现不定数目输入变量的函数的程序设计。此时,对函数的一切输入变量均将存储在以v
7、arargin命名的单元型数组中。例:在函数test2中,实现如下功能: 通过使用函数varargin,用户可以输入任意多个学生的 数学、英语及语文的成绩,然后求各科目的平均值。 程序如下:回到本章目录回到本章目录function mathavg,englishavg,chineseavg=test2(varargin)s=length(varargin); %求数组的长度mathsum=0;englishsum=0;chinesesum=0;for j=1:s mathsum=mathsum+vararginj(1); englishsum=+vararginj(2); chinesesum
8、=+vararginj(3);endmathavg=mathsum/s;englishavg=englishsum/s;chineseavg=chinesesum/s;思考:此函数如何调用。回到本章目录回到本章目录 与输入变量相对应,matlab语言对输出变量也提供了相应的函数,如nargout、varargout等。具体的使用与函数nargin和varargin相似。 下面给出一个综合应用示例。 示例函数test3中,综合使用了函数nargin、nargout、narargin、narargout等,函数目的是求各学生(总数不确定)的个人平均成绩,以及指定科目的平均成绩等。函数test2的调
9、用:90,89,60分别表示数学、英语、语文的成绩 a,b,c=test2(90,89,60,79,89,66,99,98,100)a = 89.3333b = 32.6667c = 33.3333思考:如果多个学生的成绩是同一科目的成绩放在一个数组中,如何修改test2函数。回到本章目录回到本章目录 function vararout=test3(lessons,varargin)inputnum=nargin; lessonnum=length(lessons);outputnum=nargout;for i=1:lessonnum switch lessons(i) case math
10、vararout1=sum(varargin1:inputnum(1); case english vararout2=sum(varargin1:inputnum(2); case chinese vararout3=sum(varargin1:inputnum(3); endendfor i=1:inputnum varargouti+3=sum(varargini(:);end回到本章目录回到本章目录 在matlab中,函数内部定义的变量除特殊声明外均为局部变量。如果需要使用全局变量,则应当使用命令global定义,而且在任何使用该全局变量的函数中都应加以定义,在命令窗口中也不例外。 注
11、意:变量之间必须以空格分隔,而不能用逗号分隔。示例:function avgs=test4(a)global s ss %定义全局变量m,n=size(a);for i=1:m s(i)=sum(a(i,:);endss=sum(s);avgs=ss/(m*n);调用test4: a=4 3 5;6 7 8;3 5 7;1 3 4; test4(a)ans = 4.6667 global s ss ssss = 56 ss = 12 21 15 8回到本章目录回到本章目录 子函数与局部函数子函数与局部函数 matlab中也可以定义子函数,用来扩充函数的功能。在函数文件中题头定义的函数为主函数,
12、而在函数体内定义的其他函数均被视为子函数。子函数只能为主函数或同一主函数下的其他的子函数所调用。示例:function c=test(a,b) %主函数c=test1(a,b)*test2(a,b);function c=test1(a,b) %子函数1c=a+b;function c=test2(a,b) %子函数2c=a-b;回到本章目录回到本章目录 局部函数与子函数的区别是:局部函数可以被其父目录下的所有函数所调用,而子函数则只能被其所在m文件的主函数所调用;在函数编辑的结构上,局部函数与一般的函数文件的编辑相同,而子函数则只能在主函数文件中编辑。回到本章目录回到本章目录 程序设计的辅助
13、函数程序设计的辅助函数l 用户交互函数用户交互函数 键盘输入函数包括函数input及keyboard。 函数input用于提示用户输入指定参数的值,调用格式: var=input(提示性语句) 其中,“提示性语句”将给出相应的提示信息以告知用户输入的对象,在这种调用过程中,用户可以有键盘输入任何的可计算的表达式或已赋值的当前工作空间中的变量名,而且返回至变量var中的值也是数值型,所有的输入以回车键加以确认。 回到本章目录回到本章目录第一种调用格式: a=input(input examplen)input example1+4a = 5 ischar(a)ans = 0第二种调用格式: b=
14、input(input examplen,s)input example1+4b =1+4 ischar(b)ans = 1函数input的另一种调用格式: var=input(提示性语句,s)以该格式调用时,input函数将视用户键盘输入的一切字符为字符型赋予变量var,而不对其进行任何计算。在提示型语句中可以用“n”来控制显示时的换行。例如:回到本章目录回到本章目录 另一种输入函数为keybroad,该函数出现在m文件中时,将终止程序的运行,此时用户可以查看运算过程中各变量的值必要时也可进行适当的干涉及编辑。同时该函数在matlab语言中均可应用,直到键入return并回车,这时程序返回中
15、断处,继续执行其余代码。 matlab也提供了一种中断函数pause,其调用格式: pause(n) 该命令的作用是中断程序运行并等待n秒。如果不带参数,则程序无限期中断,直到用户在键盘上键入任意键。回到本章目录回到本章目录流程控制语句流程控制语句 matlab语言的流程控制语句主要有for、while、if-else-end和switch-case这四种语句。 for语句语句 for循环语句是流程控制语句中的基础,使用该循环语句可以以指定的次数重复执行循环体内的语句。 for循环语句的调用形式: for 循环控制变量=(可以是已定义的向 量,也可在for循环语句中定义) 循环体 end回到本
16、章目录回到本章目录for i = 1:4 % 初始值:步长:终值(步长默认为1)for j = 4:-1:1h(i, j) = 1/(i+j-1);endend结果: hh = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429回到本章目录回到本章目录 while语句语句 while循环语句与for循环语句不同的是,前者是以条件的满足与否来判断循环是否结束的,而后者则是以执行次数是否达到指定值来判断的。 while循环语句的
17、一般形式: while 循环体 end 循环判断语句为某种形式的逻辑判断表达式。当表达式的值为真时就执行循环体内的语句;否则退出。当循环判断语句为矩阵时,当且仅当所有的矩阵元素非零时,逻辑表达式的值为真。例如:回到本章目录回到本章目录n = 0;while 2n 100 n = n + 1;end 从例子中可以看出while循环语句与for循环语句是有异曲同工之处的。但是两者还是有区别的,for循环语句一般适用于已知到循环次数,而不知道循环运算目标的问题;while循环语句则一般适用于已知循环运算目标,而循环次数未知的问题。break语句:当程序流程运行至该命令时,则不论循环控制变量是否满足循
18、环判断语句,均将退出当前循环,执行循环后的其他语句。continue命令:当程序流程运行至该命令时,会忽视其后的循环体操作转而执行下一层的循环。回到本章目录回到本章目录例例. 计算级数计算级数:s=1+2+22+23+263= 6302nn法二:s=0;i=0;while i64 s=s+2i; i=i+1;end法一:s=0;for i=0:63 s=s+2i;end法三:n=0:1:63;s=sum(2.n)回到本章目录回到本章目录例例. 用用while循环语句编写一个计算循环语句编写一个计算1000以内以内的的fibonacci数(数(斐波那契数列,后一个数等于前面两个数的排列,如:1,
19、1,2,3,5,8,13,21,34,55,89,144 ): f=1 1; i=1; while f(i)+f(i+1)1000 f(i+2)=f(i)+f(i+1); i=i+1; end f= 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987回到本章目录回到本章目录 if-else-end语句语句 if-else-end语句的一般形式: if 逻辑值为“真”时执行语句 else 逻辑值为“假”时执行语句 end例如: if a=1 a=a+1; else a=a+2; end回到本章目录回到本章目录 例. 计算分段函数值2cos(1)1,10,10 xxxyx xx x程序如下: x=input(请输入请输入x的值的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y请输入请输入x的值的值:y = 47.189312回到本章目录回到本章目录 在程序设计中,也常碰到需要进行多重逻辑选择的问题,这时可以采用if-else-end语句的嵌套形式: if 逻辑值1为“真”时执行语句 elseif 逻辑值2为“真”时执行语句 else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饭店设备采购合同样本
- 出口东北大豆合同标准文本
- 事故修复货车出售合同标准文本
- 加强人事政策的透明度与公正性计划
- 个人合同标准文本版
- 制作汽车购车合同标准文本
- 电器维修服务合同范本
- 农耕器材租赁合同标准文本
- 代销进口酒合同标准文本
- 人工水泥销售合同标准文本
- 2024年国信证券股份有限公司招聘笔试参考题库含答案解析
- 第6课+欧洲的思想解放运动【中职专用】《世界历史》(高教版2023基础模块)
- DLDS-1508工业机器人技术应用系统拓展方案技术说明
- 回风巷道掘进开口安全技术措施
- 九年级政治培优辅差计划集合3篇
- 安全标准化与企业管理体系融合
- 房屋租赁运营服务投标方案
- 超高层项目幕墙工程施工方案及技术措施
- 冷链测温记录表
- 试卷签领表新
- 果蔬加工工艺学-第9章 果醋酿制
评论
0/150
提交评论