M文件和流程控制概述.ppt

4.2.2 局部变量和全局变量(续) 例如对exm04_funfile.m 进行如下修改: %exm04_funfile.m %exm04 funfile2.m function m=SIGN(y) function m=SIGN if y0 global m= -1; if Y0 elseif y=0 m=-1; m=0; elseif Y=0; else m=0; m=1; else end m=1; end 4.2.2 局部变量和全局变量(续) 则指令窗中执行指令改为 global Y;Y=-5; f=exm04_funfile2 f = -1 可见利用全局变量可以实现函数间参数的传递, 但是破坏函数的封装性,因此不提倡使用全局变量。 4.2.3 M文件的一般结构 1)函数声明行:以关键字“function”开头,包括函数名以及输入输出宗量列表。 2)H1行(用%开头的第一注释行):包括大写函数名,对函数功能的简要描述,主要用 于关键词查询和help在线帮助。 3)在线帮助文本(用%开头):包括对函数输入输出宗量的解释、函数调用格式等。执行指令help funname将显示第一注释行和在线帮助文本的内容。 4)编写和修改记录(用%开头):与注释行间用“空行”分隔,标志该文件的作者、日期、版本等信息。 5)函数体?:与前面的注释行以“空行”分隔,由完成函数功能的命令行组成。函数体中可以加入以“%”开头的注释语句。 4.2.3 M文件的一般结构(续) M函数文件的必要组成部分是“函数声明行”和“函数体”,其他仅为增加可 读性和方便使用而设。 function y=Ex0502(zeta) 函数声明行 % EX0502 Step response of quadratic system. 第一注释行 % 二阶系统时域响应曲线 % zeta 阻尼系数 帮助文本 % y 时域响应 % % copyright 2003-08-01 编写记录 函数主体 x=0:0.1:20; y=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta)) plot(x,y) 注意:脚本文件没有函数声明行 4.3 变量的检测传递和限权使用函数 4.3.1 输入输出变量检测函数 nargin 在函数体内获取实际输入变量的个数 nargout 在函数体内获取实际输出变量的个数 nargin(‘fun’) 在函数体外获取’fun’指定函数的输入参数个数 nargout(‘fun’) 在函数体外获取’fun’指定函数的输出参数个数 inputname(n) 在函数体内返回第n个输入变量的实际调用变量名 varargin/varargout 可以获得输入/输出变量的各元素内容—“变长度“变量列表 例4.3 输入输出宗量的使用 算例演示: 例4.3 输入输出宗量的使用(续) 函数声明行中,“变长度”输入输出变量必须在“普通”输入输出变量之后; varargin和varargout 本身是元胞数组,当变量被依次分配给“普通”输入输出变量后,剩余变量被逐个分配给varargin和varargout 的元胞; varargin和varargout的长度取决于分配的输入输出变量数。 4.3.2 子函数和私用函数 1. 子函数 在一个M函数文件中,可以包含多个函数,第一个出现

文档评论(0)

1亿VIP精品文档

相关文档