zoukankan      html  css  js  c++  java
  • 【Matlab】函数句柄和匿名函数

    什么是函数句柄?

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

    • 将一个函数传递到另一个函数(通常称为复合函数)。例如,将函数传递到 integralfzero 等积分和优化函数。
    • 指定回调函数(例如,响应 UI 事件或与数据采集硬件交互的回调)。
    • 构造以内联方式定义而非存储在程序文件(匿名函数)中的函数的句柄。
    • 从主函数外调用局部函数。

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

    创建函数句柄

    通过在函数名称前添加一个 @ 符号来为函数创建句柄。例如,假设您有一个名为 computeSquare 的函数,该函数定义为:

    function y = computeSquare(x)
    y = x.^2;
    end
    

    则可以创建句柄并调用该函数以计算 4 的平方。

    f = @computeSquare;
    a = 4;
    b = f(a)
    

    函数句柄是您可传递给其他函数的变量。例如,计算 x2 在区间 [0,1] 上的积分。

    q = integral(f,0,1);
    

    函数句柄会存储其绝对路径,因此如果您有有效句柄,则可以从任意位置调用该函数。您不必在创建句柄时指定函数路径,只需指定函数名。

    匿名函数

    您可以创建指向匿名函数的句柄。匿名函数是基于单行表达式的 MATLAB 函数,不需要程序文件。构造指向匿名函数的句柄,方法是定义 anonymous_function 函数主体,以及指向匿名函数 arglist 的以逗号分隔的输入参数列表。语法为:

    h = @(arglist)anonymous_function
    

    例如,创建一个指向用于计算平方数的匿名函数的句柄 sqr,并使用其句柄调用该匿名函数。

    sqr = @(n) n.^2;
    x = sqr(3)
    

    由函数句柄组成的数组

    您可以通过将函数句柄收集到一个元胞数组或结构体数组中,来创建由这些函数句柄组成的数组。例如,使用元胞数组:

    C = {@sin, @cos, @tan};
    C{2}(pi)
    ans =
    
        -1
    

    或使用结构体数组:

    S.a = @sin;  S.b = @cos;  S.c = @tan;
    S.a(pi/2)
    
  • 相关阅读:
    【Oracle】IF语句
    【Oracle】PL/SQL中对空字符串的判断
    【读书笔记】沉默的大多数
    【Oracle】包及包的调用
    Android (争取做到)最全的底部导航栏实现方法 ZZ
    一个屌丝程序猿的人生(一百一十七)
    一个屌丝程序猿的人生(一百一十六)
    一个屌丝程序猿的人生(一百一十五)
    DIV_ROUND_UP(x,y)实现x/y向上取整
    SMI(MDC/MDIO)总线接口介绍
  • 原文地址:https://www.cnblogs.com/LENMOD/p/14628156.html
Copyright © 2011-2022 走看看