当前位置:
文档之家› matlab-函数句柄 ppt课件
matlab-函数句柄 ppt课件
1.2656 r2 =
-2.7656
6
ppt课件
➢ 嵌套函数 任一m函数体内所定义的函数称为外部函
数的嵌套函数。matlab支持多重嵌套函数 即 在嵌套函数内部继续定义下一层的嵌套函数。
7
ppt课件
function x = nestFun(p1, p2) X1=nestFun(p2);
function y = nestFunIn(p3)%嵌套函数 y=2*p3; end x=x1+p1; end
8
ppt课件
Matlab函数体通常不需end结束标记, 但如包含嵌套函数,则该m文件内的所有函 数(主函数和子函数)不论是否包含嵌套 函数都需显式end标记。 嵌套函数的调用规则 1.父级函数可调用下一 层嵌套函数。2.相同父级的同级嵌套函数可 相互调用。3.处于低层的嵌套函数可调用任 意父级函数。
22
ppt课件
当我们将一个函数名作为字符串传递给函 数str2func时,也可以创建该函数的函数句柄。
19
ppt课件
函数句柄的调用和操作
可通过函数feval进行函数句柄的调用 feval(函数句柄)(间接调用格式)
f_h1=@peaks%peaks函数,可产生一个凹凸有致的 曲面 feval(f_h1) feval(函数句柄,参数列表) f_h=@plot feval(f_h,0:10,0:10)
ppt课件
为了说明问题,我们用简单的两个数相加,
>> sum=@(x,y)x+y
sum = @(x,y)x+y
>> sum(2,3) ans =
5
在这里,(x,y)为输入参 数列表,x+y为运算表达 式。@的作用就是将一个 函数的函数句柄赋值给等 号左边的变量。在调用函 数时就可以调用该句柄, 可以实现同样的功能。
4
ppt课件
➢ 子函数 一个m文件中可能包含多个函数。主
函数之外 数只能为主函数或同一m文件中的其它子 函数可见。
而即便在相同m文件中,子函数内定 义的变量也不可为 非定义为全局或作为参数传递。
5
ppt课件
function [x,y]=equal(a,b,c)%主函数 d=b.^2-4*a*c;%子函数 x=(-b+sqrt(d))./(2*a); y=(-b-sqrt(d))./(2*a); >> [r1 r2]=equal(2,3,-7) r1 =
18
ppt课件
函数句柄的创建和显示 定义函数句柄的定义只需在提示符@后添加相应函数
的函数名 f_h=@plot
f_h = @plot 函数句柄的内容通过functions显示
functions(f_h) ans = function: 'plot'
type: ‘simple' file: 'MATLAB built-in function'
17
ppt课件
函数句柄的一个重要的特性是将它们 可以用来标识子函数、私有函数和嵌套函 数。一般情况下,这些函数对于用户来说 都是“隐蔽”的,这些标识对于用户正确 使用这些函数非常有用。例如,当我们在 编写一个含有子函数的M文件时,可以为 子函数创建一个句柄,并作为主函数的一 个输出参数提供给用户,这样就是本来 “隐蔽”的子函数“显现”出来,以便于 用户对其进行验证和使用。
ppt课件ห้องสมุดไป่ตู้
函数句柄
1
ppt课件
1
函数类型
主
(MATLAB)
要 内
2 函数句柄介绍
容
3 函数句柄举例
2
精品资料
ppt课件
MATLAB函数的类型 有主函数、子函数、嵌套函数、私用函数和匿
名函数等 ➢ 主函数
任意m文件中的第一个函数称呼为主函数。 主函数之后可能附随多个子函数。主函数是在命 令区或其它函数中可调用的唯一一个该m文件中 所定义的函数。
15
ppt课件
句柄定义:matlab中,每一个对象都 有一个数字来标示,叫做句柄。(可以 理解为一个人的名字,这样在调用时可 以调用函数句柄而不用调用该函数)
16
ppt课件
函数句柄优点
方便地实现函数间互相调用 兼容函数加载的所有方式 拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性 减少程序设计中的冗余 提高重复执行的效率 数组、结构数组、细胞型数组结合定义数据
13
ppt课件
fhandle=@(arglist) expression 变量名=@(输入参数列表)
其中fhandle (function handle)相当于C语言中的函数指针 arglist是参数列表,多个参数使用逗号分隔, Expression则是该函数的表达式,从这里我们引 入函数句柄。
14
12
ppt课件
➢ 匿名函数
匿名函数 anonymous function)是 MATLAB 7.0版提出的一种全新的函数描述形式和内 联函数类似可以让用户编写简单的函数而不需要创建 M文件。
相当于C语言中的函数指针(入口地址)只不过句 柄就用一个唯一的常整数来指出 。匿名函数是函数句 柄的一种特殊用法这里所得到的函数句柄变量不指向 特定的函数即不指向函数M文件中的函数名而是指向 一个函数表达式(具体表达式)。
9
ppt课件
➢ 私有函数 私有函数仅对满足条件的特定函数开
放。私有函数存放于名为private的子目录 下,访问条件是存放于该private子目录的 上一层父目录中的m文件函数
从存放于该private子目录上一层父目 录中的m文件函数中发起调用的m脚本。
10
ppt课件 11
ppt课件
➢ 内联函数(inline)函数是MATLAB 7以前经常使 用的一种构造函数对象的方法。在命令窗口、程 序或函数中创建局部函数时,通过使用inline构 造函数而不用将其储存为一个M文件,同时又可 以像使用一般函数那样调用它。 MATLAB中的内 联函数借鉴了C语言中的内联函数,现在应用较 少。
20
ppt课件
>> sum=@(x,y)x.^2+y.^2 sum = @(x,y)x.^2+y.^2 >> sum(2,3) ans =
5 直接调用格式
21
ppt课件
函数句柄与函数名字符串转换
func2str —— 函数名字符串转换函数句柄 str2func —— 函数句柄转换函数名字符串
funh=str2func('det') ans funh = @det func2str(funh) ans = det