关闭

函数句柄matlab

标签: matlab函数句柄
720人阅读 评论(0) 收藏 举报
分类:

 

        函数句柄是一种特殊的数据类型,它提供了间接调用的函数的方法,类似于c语言中的指针,只不过这里是指向一个函数。

      函数句柄包含了函数的路径、函数名、类型及可能存在的重载方法,必须通过专门的定义创建,创建函数句柄需要用到的操作符是@,格式为

Fhandle=@functionname

例如:

m=[3 2 0;-5 0 7;0 0 1];

[row,col,val]=find(m)

f=@find;[row,col,val]=f(m)

这两条语句得到的结果是一样的。

 

 

比如定义f(x)=x^2,可以写为

f=@(x)(x.^2)

其中@(x)(x.^2)就是匿名函数,第一个括号里面是自变量,第二个括号里面是表达式,@是函数指针

f=@(x)(x.^2)表示将匿名函数@(x)(x.^2)赋值给f,于是f就表示该函数。

于是f(2)=2.^2=4;f(1:3)=[1:3].^2=[14 9]等等

 

再比如:f=@(x)acos(x)表示什么意思?

f为函数句柄,@是定义句柄的运算符。f=@(x)acos(x)相当于建立了一个函数文件:

% f.m

function y=f(x)

y=acos(x);

若有下列语句:

xsqual=@(x)1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2);

则相当于建立了一个函数文件:

% xsqual.m

function y=xsqual(x)

y=1/2.*(x==-1/2)+1.*(x>-1/28&x<1/2)+1.2.*(x==-1/2);

 


定义匿名函数时也可以调用别的匿名函数,比如

f1=@(x,y)(x.^2+y.^2)

定义了函数x^2+y^2

f2=@(t)(f1(t,2))

定义了函数t^2+4

f3=@(x)(f1(x(1),x(2)))

定义了函数x(1)^2+x(2)^2

使用匿名函数时一定要注意函数本身的参数形式,如

f1(2,3)

表示2^2+3^2

f2(3)=3

表示3^2+4

f3([1,2])

表示1^2+2^2


说白了就是函数指针,当然这样做有它的好处

      ①提高运行速度。因为matlab对函数的调用每次都是要搜索所有的路径,从set path中我们可以看到,路径是非常的多的,所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄,对你的速度会有提高的。

      ②使用可以与变量一样方便。比如说,我再这个目录运行后,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝过来。因为你创建的function handles中,已经包含了路径,

 

6
0
查看评论

Matlab中的函数句柄@

Matlab中的函数句柄简介及应用。
  • YhL_Leo
  • YhL_Leo
  • 2016-02-19 20:57
  • 11643

函数句柄 Function Handle MATLAB

作用: 将函数传递给另一个函数(function functions)。 指定回调函数。 例如,响应UI事件或与数据采集硬件交互的回调。 构造内联函数的句柄,而不是存储在程序文件(匿名函数)中。 从主功能外部调用本地功能。 例子:建立一个函数句柄 生成函数句柄...
  • qwerasdf_1_2
  • qwerasdf_1_2
  • 2017-05-20 11:21
  • 703

Matlab中函数句柄@的作用及介绍

问:f=@(x)acos(x)表示什么意思?其中@代表什么? 答:表示f为函数句柄,@是定义句柄的运算符。f=@(x)acos(x) 相当于建立了一个函数文件: % f.m function  y=f(x) y=acos(x); 若有下列语句:xsqual=@(x)1/2.*(x...
  • kevinhg
  • kevinhg
  • 2013-04-28 09:07
  • 71649

matlab 函数句柄(function handle)

前言 函数句柄是一种MATLAB的数据类型,它包含引用函数的信息。 使用函数句柄的好处 传递函数访问信息给其它的函数 允许对子函数和私有函数更广的访问 减少需要定义的函数的数量 改善重复操作的性能
  • hzh_csdn
  • hzh_csdn
  • 2016-12-02 15:57
  • 615

MATLAB中的函数句柄及其应用

1.函数句柄的创建 函数句柄(function handle)是MATLAB中的一类特殊的数据结构,它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C++),或者函数引用(Perl)。作用是将一个函数封装成一个变量,使其能够像其它变量一样在程序的不同部...
  • lqzdreamer
  • lqzdreamer
  • 2017-04-19 10:22
  • 773

MATLAB函数句柄

函数句柄是从MATLAB6.0开始具有的一种语言结构
  • seamanj
  • seamanj
  • 2014-06-22 16:48
  • 2208

关于Matlab中句柄@的用法

句柄的使用格式: 变量名=@(输入参数列表)运算表达式 例如计算一个数的平方可以写成如下格式: mysqr=@(x)x.*x; %第一个(x)为输入的参数,而后面x.*x则为数学意义上的x^2; 因为matlab默认的计算单位为矩阵,所以对于加减乘除计算,matlab分别对应 “ .* ”...
  • gzp444280620
  • gzp444280620
  • 2015-10-19 17:35
  • 2033

Matlab中函数句柄(function handle)的作用及介绍

问:f=@(x)acos(x)表示什么意思?其中@代表什么? 答:表示f为函数句柄,@是定义句柄的运算符。f=@(x)acos(x) 相当于建立了一个函数文件: % f.m function  y=f(x) y=acos(x); 若有下列语句:xsqual=@(x)1/2.*...
  • u012661541
  • u012661541
  • 2014-10-31 19:29
  • 4332

matlab 函数句柄

类似于C语言中的函数指针 &amp;gt;&amp;gt; m=[3 2 0;-1,0,7;0 0 1]; &amp;gt;&amp;gt; m m = 3 2 0 -1 0 7 0 0 ...
  • u013043762
  • u013043762
  • 3天前 12:39
  • 3

MATLAB中的函数句柄及其应用

转自https://www.cnblogs.com/heleifz/p/matlab-function-handle.html1.函数句柄的创建函数句柄(function handle)是MATLAB中的一类特殊的数据结构,它的地位类似于其它计算机语言里的函数对象(Javascript,Python...
  • qq_31811537
  • qq_31811537
  • 2018-02-13 14:44
  • 8
    个人资料
    • 访问:560453次
    • 积分:6904
    • 等级:
    • 排名:第4015名
    • 原创:136篇
    • 转载:1篇
    • 译文:0篇
    • 评论:62条
    博客专栏
    最新评论