一起来学matlab-matlab学习笔记13函数

13_3 创建函数句柄

觉得有用的话,欢迎一起讨论相互学习~Follow Me

参考文献

https://ww2.mathworks.cn/help/matlab/matlab_prog/creating-a-function-handle.html

可以为已命名函数和匿名函数创建函数句柄。可以将多个函数句柄存储在数组中,保存并加载它们,方法与对任何其他变量一样。

什么是函数句柄

函数句柄是一种存储指向函数的关联关系的 MATLAB® 数据类型。 间接调用函数使在调用该函数时无需考虑调用位置。 函数句柄的典型用法包括:

  1. 将一个函数传递到另一个函数(通常称为功能函数)。例如,将函数传递到 integral 和 fzero 等积分和优化函数。

  2. 指定回调函数。例如,响应 UI 事件或与数据采集硬件交互的回调。

  3. 构造以内联方式定义而非存储在程序文件(匿名函数)中的函数的句柄。

  4. 从主函数外调用局部函数。

  • 可以使用 isa(h,'function_handle') 来查看变量 h 是否为函数句柄。

创建函数句柄

  • 通过在函数名称前添加一个 @ 符号来为函数创建句柄。例如,如果有一个名为 myfunction 的函数,f = @myfunction; .
  • 使用句柄调用函数的方式和直接调用函数一样
function y = computeSquare(x)
y = x.^2;
end
创建句柄并调用该函数以计算 4 的平方。 f = @computeSquare;
a = 4;
b = f(a)
b = 16
  • 如果该函数不需要任何输入参数,使用空括号,而不能直接调用函数名
h = @ones;
a = h()
a = 1
如果不使用括号,则该赋值会创建另一个函数句柄。 a = h
a = @ones
  • 函数句柄是可以传递给其他函数的变量,例如:q = integral(f,0,1);
  • 函数句柄会存储其绝对路径,因此有效句柄可以从任意位置调用该函数。不必在创建句柄时指定函数路径,只需指定函数名。

注意

  • 名称长度 - 函数名称(包括包名称和类名称)的每个部分都必须小于 namelengthmax 指定的数值。否则 MATLAB 会截断该名称的后面一部分。

  • 范围 - 在您创建句柄时,该函数必须处于范围内。因此,该函数必须在 MATLAB 路径上或位于当前文件夹中。或者,对于局部或嵌套函数句柄,这些函数必须位于当前文件中。

  • 优先级 - 当多个函数采用同一名称时,MATLAB 会使用与调用函数相同的优先级规则来定义函数句柄。

  • 重载 - 如果指定的函数在非基础 MATLAB 类的类中重载函数,那么在构造该函数的句柄时,函数不会与该函数句柄关联。相反,MATLAB 会考虑输入参数并在计算时确定要调用的实现。

匿名函数

  • 创建一个指向用于计算平方数的匿名函数的句柄 sqr,并使用其句柄调用该匿名函数
sqr = @(n) n.^2;
x = sqr(3)
x = 9

由函数句柄组成的数组

  • 您可以通过将函数句柄收集到一个元胞数组或结构体数组中,来创建由这些函数句柄组成的数组。例如,使用元胞数组:
C = {@sin, @cos, @tan};
C{2}(pi)
ans = -1
或使用结构体数组: S.a = @sin; S.b = @cos; S.c = @tan;
S.a(pi/2)
ans = 1

保存和加载函数句柄

  • 可以在 MATLAB 中保存和加载函数句柄,就像处理任何其他变量一样。换言之,使用 save 和 load 函数。如果您保存函数句柄,则 MATLAB 不会保存路径信息。如果加载函数句柄,并且函数文件不再位于该路径上,则该句柄无效。如果文件位置或文件名在您创建句柄后进行了更改,则该句柄将变得无效。如果句柄无效,MATLAB 可能会在您加载文件时显示警告。当调用无效句柄时,MATLAB 将引发错误。

matlab学习笔记13_3创建函数句柄的更多相关文章

  1. matlab学习笔记13_2匿名函数

    一起来学matlab-matlab学习笔记13函数 13_2 匿名函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help/m ...

  2. matlab学习笔记12_2创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段

    一起来学matlab-matlab学习笔记12 12_2 结构体 创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段 觉得有用的话 ...

  3. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  4. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  5. matlab学习笔记---(1)

    Matlab学习笔记 一. Desktop Basics (Matlab 基础知识) 当你打开Matlab的时候,matlab按照以下默认的方式展示出来. 该桌面主要包括以下几部分内容: 当前文件夹: ...

  6. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  7. OpenCV 学习笔记03 findContours函数

    opencv-python   4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...

  8. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  9. JavaScript:学习笔记(5)——箭头函数=>以及实践

    JavaScript:学习笔记(5)——箭头函数=>以及实践 ES6标准新增了一种新的函数:Arrow Function(箭头函数).本文参考的链接如下: MDN箭头函数:https://dev ...

随机推荐

  1. springboot-注解-@Repository、@Service、@Controller 和 @Component

    Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring ...

  2. js动画---多物体运动

    对于多物体运动和单个物体运动来说,没有特别大的区别,实现原理基本上是一样的,都是通过定时器来实现的,但是多物体有一些地方需要注意,具体哪些需要注意,我将在下面的程序中说明. 首先,我们需要建立几个li ...

  3. Shell 日常 ip 端口可用性测试

    ip port 可用测试 telnet 测试某个ip 端口是否可用很方便,但是如果ip比较多,写脚本就不方便了因为是阻塞的 这里强烈推荐 nc nc -z -w 1 127.0.0.1 8990 这里 ...

  4. python应用-输入三个数,输出其最大值

    """ 输入三个数,输出其最大值 Author:罗万财 Date:2017-7-6 """ a=int(input('a=')) b=int ...

  5. Nginx——配置文件服务下载

    前言 只是临时搭建的一个下载服务,所以就直接用nginx来咯 步骤 解析域名 将域名解析到要部署应用对应的服务器,就是个解析操作,没啥好讲的 创建目录 # mkdir /data/install/ 配 ...

  6. NSURLProtocol

    An NSURLProtocol object handles the loading of protocol-specific URL data. @abstract This method reg ...

  7. 比较两个CSV的方法的探索

    1.开始时,我用ultraEdit来简单比较,需要排序,而且比较的结果也有限 2.Excel也有这样的功能,可是好复杂 3.而后,发现dbeaver这个tools,利用JDBC Driver(csvj ...

  8. share memory between guest and nic

    通过硬件的IOMMU,内核提供的共享内存.VFIO可以实现. REF: 1. offical DPDK API Doc, 简书有翻译版 DPDK编程指南(翻译)(一)  (二十七) 2. dpdk v ...

  9. vue指令用法

    vue指令 指令式带有 v- 前缀的特殊特性v-text和v-html都属于指令将数据和dom做关联,当表达式的值改变时,响应式地作用在视图 解决大胡子语法闪烁案例 [v-cloak] { dispa ...

  10. <每日 1 OJ> -LeetCode 28. 实现 strStr()

    题目: 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存 ...