- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SXSY013-Matlab程序设计基础程序文件与函数编程
如sort * * Matlab程序设计基础 —— 函数编程 * 编写一个大程序的最好的方法是将它以好的设计分化为小块(通常采用函数的方式)。这种方式通过减少为了理解代码的作用而必须阅读的代码数量使得程序的可读性、易于理解性和可测试性得到了增强。超过编辑器两屏幕的代码都应该考虑进行分割。 内容提要 函数文件的定义 递归函数 子函数 函数句柄、内联函数、匿名函数 * function 输出形参列表=函数名(输入形参列表) % 注释说明部分 (可选) 函数体语句 第一行为引导行,表示该 M文件是函数文件 函数名的命名规则与变量名相同 ( 必须以字母开头 ) 当输出形参多于一个时,用方括号括起来 函数文件 函数文件一般格式 函数必须是一个单独的 M文件 函数文件的文件名必须与函数名一致 * 函数文件(f2cf.m): 例:将华氏温度转化为摄氏温度: 编程示例 clear; f=input(Please input f:); c=5*(f-32)/9; fprintf(c=%g \n, c) 脚本文件 (f2cs.m): function c=f2cf(f) c=5*(f-32)/9; * 函数调用的一般格式 输出实参列表=函数名(输入实参列表) 函数调用时,实参的顺序应与函数定义时形参的顺序一致 实参与形参之间的结合是通过值传递实现的 Matlab 用两个永久变量nargin 和 nargout 分别记录调用该函数时的输入实参和输出实参的个数 函数可以嵌套调用,即一个函数可以被其它函数调用, 甚至可以被它自身调用,此时称为递归调用 函数调用 * 内容提要 函数文件的定义 递归函数 子函数 函数句柄、内联函数、匿名函数 * % 函数文件 myfactor.m function y=myfactor(n) if n=1 y=1; else y=n*myfactor(n-1); end 例:利用函数的递归调用计算 n! 递归函数举例 * 内容提要 函数文件的定义 递归函数 子函数 函数句柄、内联函数、匿名函数 * 子函数 一个函数文件中可以包含一个或多个函数, 其中第一个称为主函数,其它函数称为子函数 除全局变量外,所有函数(主函数、子函数)中的变量都是局部变量,函数之间通过输入、输出参数进行数据传递 主函数必须位于最前面,子函数出现的次序任意 子函数只能被主函数和位于同一个M文件中的其它子函数调用 外部 M 文件只能调用主函数 子函数 * * 子函数举例 % ex4subfun.m function [avg, max]=myscore(x) % 主函数 n=length(x); avg=mymean(x,n); max=mymax(x); function y=mymean(x,n) % 子函数,计算平均值 y=sum(x)/n; function y=mymedian(x) % 子函数,计算最大值 y=max(x); x=rand(6,1) [y1,y2]=myscore(x) 内联函数 内联函数的定义 函数名=inline(函数表达式, 变量1, 变量2,...) MATLAB中的内联函数借鉴了C语言中的内联函数,使用内联函数可以减少调用的时间和空间开销。 由于内联函数是储存于内存中而不是在M文件中,省去了文件访问的时间,加快了程序的运行效率。 但内联函数只能定义一些简单的函数表达式。 若调用函数时涉及数组运算,则定义函数时也要用数组运算! 例: f=inline(x^2 + y^2,x,y); y=f(2,3) * 匿名函数 匿名函数的定义 fhandle=@ (输入参数列表)运算表达式 例: f=@(x,y) x^2 + y^2; y=f(2,3) 匿名函数(anonymous function)是 Matlab 7.0 版提出的一种全新的函数描述形式,和内联函数类似,可以让用户编写简单的函数而不需要创建M文件;它具有内联函数的所有优点,并且效率比内联函数高。 * 匿名函数 p=3; q=5; f=@(x,y) x^p + y^q; y=f(2,3) p=2; q=4; f=@(x,y) x^p + y^q; % 当参数发生改变时,函数必须重新定义 y=f(2,3) 若调用函数时涉及数组运算,则定义函数时也需要使用数组运算 匿名函数支持变量替换 f=@(x) x.^2 + 1; x=1:5; y=f(x) * 函数句柄 函数句柄的定义 fhandle=@ 函数名 函数句柄:可以理解成一个函数的代号或别名,调用函数句柄就等价于调用该函数。 @ 的作用就是将一个函数的函数
原创力文档


文档评论(0)