matlab-函数句柄
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.2656 r2 =
-2.7656
实用文档
➢ 嵌套函数 任一m函数体内所定义的函数称为外部
函数的嵌套函数。matlab支持多重嵌套函数 即在嵌套函数内部继续定义下一层的嵌套函数 。
例:
实用文档
function x = nestFun(p1, p2) X1=nestFun(p2);
function y = nestFunIn(p3)%嵌套函数 y=2*p3; end x=x1+p1; end
实用文档
Matlab函数体通常不需end结束 标记,但如包含嵌套函数,则该m文件内的 所有函数(主函数和子函数)不论是否包 含嵌套函数都需显式end标记。 嵌套函数的调用规则 1.父级函数可调用下 一层嵌套函数。2.相同父级的同级嵌套函 数可相互调用。3.处于低层的嵌套函数可 调用任意父级函数。
实用文档
实用文档
函数句柄的调用和操作
可通过函数feval进行函数句柄的调用 feval(函数句柄)(间接调用格式)
f_h1=@peaks%peaks函数,可产生一个凹凸有致 的曲面
feval(f_h1) feval(函数句柄,参数列表) f_h=@plot feval(f_h,0:10,0:10)
实用文档
实用文档
函数句柄的一个重要的特性是将 它们可以用来标识子函数、私有函数和嵌 套函数。一般情况下,这些函数对于用户 来说都是“隐蔽”的,这些标识对于用户 正确使用这些函数非常有用。例如,当我 们在编写一个含有子函数的M文件时,可以 为子函数创建一个句柄,并作为主函数的 一个输出参数提供给用户,这样就是本来 “隐蔽”的子函数“显现”出来,以便于 用户对其进行验证和使用。
实用文档
➢ 匿名函数
匿名函数 anonymous function)是 MATLAB 7.0版提出的一种全新的函数描述形式和内联 函数类似可以让用户编写简单的函数而不需要创建M 文件。
相当于C语言中的函数指针(入口地址)只不 过句柄就用一个唯一的常整数来指出 。匿名函数是 函数句柄的一种特殊用法这里所得到的函数句柄变量 不指向特定的函数即不指向函数M文件中的函数名而 是指向一个函数表达式(具体表达式)。
ans funh = @det func2str(funh) ans = det
实用文档
当我们将一个函数名作为字符串传递 给函数str2func时,也可以创建该函数的函数 句柄。
实用文档
二.函数句柄
句柄定义:matlab中,每一个对象都有 一个数字来标示,叫做句柄。(可以理 解为一个人的名字,这样在调用时可以 调用函数句柄而不用调用该函数)
实用文档
函数句柄优点
方便地实现函数间互相调用 兼容函数加载的所有方式 拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性 减少程序设计中的冗余 提高重复执行的效率 数组、结构数组、细胞型数组结合定义数据
>> sum=@(x,y)x.^2+y.^2 sum =
@(x,y)x.^2+y.^2 >> sum(2,3) ans =
5 直接调用格式
实用文档
函数句柄与函数名字符串转换
func2str —— 函数名字符串转换函数句柄 str2func —— 函数句柄转换函数名字符串 funh=str2func('det')
实用文档
函数句柄的创建和显示 定义函数句柄的定义只需在提示符@后添加相应函
数的函数名 f_h=@plot
f_h = @plot 函数句柄的内容通过functions显示
functions(f_h) ans = function: 'plot'
type: ‘simple' file: 'MATLAB built-in function'
➢ 私有函数 私有函数仅对满足条件的特定函
数开放。私有函数存放于名为private的子 目录下,访问条件是存放于该private子目 录的上一层父目录中的m文件函数
从存放于该private子目录上一层 父目录中的m文件函数中发起调用的m脚本 。
实用文档
实用文档
➢ 内联函数(inline)函数是MATLAB 7以前经常 使用的一种构造函数对象的方法。在命令窗口、 程序或函数中创建局部函数时,通过使用inline 构造函数而不用将其储存为一个M文件,同时又 可以像使用一般函数那样调用它。 MATLAB中的 内联函数借鉴了C语言中的内联函数,现在应用 较少。
实用文档
函数句柄
实用文档
1
函数类型
主
(MATLAB)
要
2 函数句柄介绍
内
容
3 函数句柄举例
实用文档
一.函数类型介绍
MATLAB函数的类型 有主函数、子函数、嵌套函数、私用函
数和匿名函数等 ➢ 主函数
任意m文件中的第一个函数称呼为主函数 。主函数之后可能附随多个子函数。主函数是在 命令区或其它函数中可调用的唯一一个该m文件 中所定义的函数。
实用文档
fhandle=@(arglist) expression 变量名=@(输入参数列表)
其中fhandle function handle)相当于C语言中的函数指针 arglist是参数列表,多个参数使用逗号分隔, Expression则是该函数的表达式,从这里我们 引入函数句柄。
实用文档
为了说明问题,我们用简单的两个数相加,
>> sum=@(x,y)x+y
sum = @(x,y)x+y
>> sum(2,3) ans =
5
在这里,(x,y)为输入参 数列表,x+y为运算表达式。 @的作用就是将一个函数的 函数句柄赋值给等号左边 的变量。在调用函数时就 可以调用该句柄,可以实 现同样的功能。
实用文档
➢ 子函数 一个m文件中可能包含多个函数
。主函数之外 子函数只能为主函数或同一m文件中的其 它子函数可见。
而即便在相同m文件中,子函数 内定义的变量也不可为其它子函数所使用
实用文档ቤተ መጻሕፍቲ ባይዱ
举例(求2*X^2+3*X-7=0的根)
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 =
-2.7656
实用文档
➢ 嵌套函数 任一m函数体内所定义的函数称为外部
函数的嵌套函数。matlab支持多重嵌套函数 即在嵌套函数内部继续定义下一层的嵌套函数 。
例:
实用文档
function x = nestFun(p1, p2) X1=nestFun(p2);
function y = nestFunIn(p3)%嵌套函数 y=2*p3; end x=x1+p1; end
实用文档
Matlab函数体通常不需end结束 标记,但如包含嵌套函数,则该m文件内的 所有函数(主函数和子函数)不论是否包 含嵌套函数都需显式end标记。 嵌套函数的调用规则 1.父级函数可调用下 一层嵌套函数。2.相同父级的同级嵌套函 数可相互调用。3.处于低层的嵌套函数可 调用任意父级函数。
实用文档
实用文档
函数句柄的调用和操作
可通过函数feval进行函数句柄的调用 feval(函数句柄)(间接调用格式)
f_h1=@peaks%peaks函数,可产生一个凹凸有致 的曲面
feval(f_h1) feval(函数句柄,参数列表) f_h=@plot feval(f_h,0:10,0:10)
实用文档
实用文档
函数句柄的一个重要的特性是将 它们可以用来标识子函数、私有函数和嵌 套函数。一般情况下,这些函数对于用户 来说都是“隐蔽”的,这些标识对于用户 正确使用这些函数非常有用。例如,当我 们在编写一个含有子函数的M文件时,可以 为子函数创建一个句柄,并作为主函数的 一个输出参数提供给用户,这样就是本来 “隐蔽”的子函数“显现”出来,以便于 用户对其进行验证和使用。
实用文档
➢ 匿名函数
匿名函数 anonymous function)是 MATLAB 7.0版提出的一种全新的函数描述形式和内联 函数类似可以让用户编写简单的函数而不需要创建M 文件。
相当于C语言中的函数指针(入口地址)只不 过句柄就用一个唯一的常整数来指出 。匿名函数是 函数句柄的一种特殊用法这里所得到的函数句柄变量 不指向特定的函数即不指向函数M文件中的函数名而 是指向一个函数表达式(具体表达式)。
ans funh = @det func2str(funh) ans = det
实用文档
当我们将一个函数名作为字符串传递 给函数str2func时,也可以创建该函数的函数 句柄。
实用文档
二.函数句柄
句柄定义:matlab中,每一个对象都有 一个数字来标示,叫做句柄。(可以理 解为一个人的名字,这样在调用时可以 调用函数句柄而不用调用该函数)
实用文档
函数句柄优点
方便地实现函数间互相调用 兼容函数加载的所有方式 拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性 减少程序设计中的冗余 提高重复执行的效率 数组、结构数组、细胞型数组结合定义数据
>> sum=@(x,y)x.^2+y.^2 sum =
@(x,y)x.^2+y.^2 >> sum(2,3) ans =
5 直接调用格式
实用文档
函数句柄与函数名字符串转换
func2str —— 函数名字符串转换函数句柄 str2func —— 函数句柄转换函数名字符串 funh=str2func('det')
实用文档
函数句柄的创建和显示 定义函数句柄的定义只需在提示符@后添加相应函
数的函数名 f_h=@plot
f_h = @plot 函数句柄的内容通过functions显示
functions(f_h) ans = function: 'plot'
type: ‘simple' file: 'MATLAB built-in function'
➢ 私有函数 私有函数仅对满足条件的特定函
数开放。私有函数存放于名为private的子 目录下,访问条件是存放于该private子目 录的上一层父目录中的m文件函数
从存放于该private子目录上一层 父目录中的m文件函数中发起调用的m脚本 。
实用文档
实用文档
➢ 内联函数(inline)函数是MATLAB 7以前经常 使用的一种构造函数对象的方法。在命令窗口、 程序或函数中创建局部函数时,通过使用inline 构造函数而不用将其储存为一个M文件,同时又 可以像使用一般函数那样调用它。 MATLAB中的 内联函数借鉴了C语言中的内联函数,现在应用 较少。
实用文档
函数句柄
实用文档
1
函数类型
主
(MATLAB)
要
2 函数句柄介绍
内
容
3 函数句柄举例
实用文档
一.函数类型介绍
MATLAB函数的类型 有主函数、子函数、嵌套函数、私用函
数和匿名函数等 ➢ 主函数
任意m文件中的第一个函数称呼为主函数 。主函数之后可能附随多个子函数。主函数是在 命令区或其它函数中可调用的唯一一个该m文件 中所定义的函数。
实用文档
fhandle=@(arglist) expression 变量名=@(输入参数列表)
其中fhandle function handle)相当于C语言中的函数指针 arglist是参数列表,多个参数使用逗号分隔, Expression则是该函数的表达式,从这里我们 引入函数句柄。
实用文档
为了说明问题,我们用简单的两个数相加,
>> sum=@(x,y)x+y
sum = @(x,y)x+y
>> sum(2,3) ans =
5
在这里,(x,y)为输入参 数列表,x+y为运算表达式。 @的作用就是将一个函数的 函数句柄赋值给等号左边 的变量。在调用函数时就 可以调用该句柄,可以实 现同样的功能。
实用文档
➢ 子函数 一个m文件中可能包含多个函数
。主函数之外 子函数只能为主函数或同一m文件中的其 它子函数可见。
而即便在相同m文件中,子函数 内定义的变量也不可为其它子函数所使用
实用文档ቤተ መጻሕፍቲ ባይዱ
举例(求2*X^2+3*X-7=0的根)
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 =