Matlab中函数句柄总结复盘

Posted Jeossirey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab中函数句柄总结复盘相关的知识,希望对你有一定的参考价值。

今天杰哥给大家介绍一下函数句柄的详细知识。

首先我们先看一个问题:表示什么意思呢?其中的@代表什么呢?
我们来揭晓一下答案:

f是函数句柄;@是定义句柄的运算符;相当于建立了一个函数文件:

% 建立函数文件f.m
function y=f(x)
y=cos(x);

再给大家举个例子:

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

%建立xsqual函数
function y=xsqual(x)
y=x^2+2*x+1;

我们再做一个详细说明:

1、函数句柄function_handle(@):是一种间接调用函数的方式。
2、语法:handle=@functionname  or handle=@(arglist)anonymous_function
3、描述:函数句柄(function handle)是一种能够提供函数间接调用的matlab value。我们可以通过传递句柄来调用各种其他功能。你也可以将句柄存储到数据结构中备用(例如Handle Graphic 回调)。句柄是matlab的标准数据类型之一。
      当创建句柄时,你所指定的函数必须在matlab搜索路径之中,并且必须在创建语句的scope之中。例如,只要在定义子函数的文件之中,我们就可以为这个子函数创建句柄。这些条件不适用于evaluate函数句柄。例如,你可以在一个单独(out-scope)通过句柄执行一个子函数,这要求句柄是在in-scope创建的。

举例说明:
       handle=@(arglist)anonymous_function用来创建匿名函数(anonymous function)并返回该匿名函数的句柄。其中:括号右边的函数体是单个的matlab语句(statement)或者matlab命令;arglist是一个用逗号“,”分隔的输入变量列表;该函数通过句柄handle执行。
备注:函数句柄是标准的matlab数据类型。因此,你可以像matlab其他数据类型一样进行操作。

4、函数句柄的好处
       ①提高运行速度。因为matlab对函数的调用每次都是要搜索所有的路径,从set path中我们可以看到,路径是非常的多的,所以如果一个函数在你的程序中需要经常用到的话,使用函数句柄,对运行速度会有所提高。
       ②使用可以与变量一样方便。比如说,我在这个目录运行后,创建了本目录的一个函数句柄,当我转到其他的目录下的时候,创建的函数句柄还是可以直接调用的,而不需要把那个函数文件拷贝过来。因为你创建的function handles中,已经包含了路径。

以上是关于Matlab中函数句柄总结复盘的主要内容,如果未能解决你的问题,请参考以下文章

matlab中的函数句柄

如何在Matlab中调用afterEach后得到函数句柄的输出?

如何在 Matlab 中测试变量是不是是函数句柄

matlab中函数句柄的操作

MATLAB 的函数句柄

Matlab - 可选句柄参数首先用于类似函数的绘图