You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中匿名函数(anonymous function)与函数句柄(function handle)的区别?

MATLAB里匿名函数和函数句柄到底啥区别?

先搞懂两个概念的本质

  • 函数句柄(Function Handle):这是MATLAB里的一种特殊数据类型,说白了就是个「函数引用」——它能指向任何可调用的MATLAB函数,不管是系统自带的内置函数、你自己写的m文件函数、嵌套在其他函数里的内部函数,甚至是匿名函数都行。比如:
    • 指向内置正弦函数:sin_h = @sin
    • 指向你写的自定义函数:my_func_h = @my_calculate
    • 指向匿名函数:anon_h = @(x) x.^2
  • 匿名函数(Anonymous Function):这是一种不用单独写m文件的「临时小函数」,只能通过@(输入参数) 表达式这种语法直接定义。当你这么写的时候,得到的结果就是一个指向这个匿名函数的函数句柄。

核心区别点

  • 范围不一样:函数句柄是个大范畴,匿名函数只是它能指向的其中一种函数类型。
  • 存在形式不同:匿名函数没有独立的文件,是临时定义的一次性小函数;而函数句柄可以指向有单独m文件的正规函数,也能指向系统内置函数。
  • 用法场景有差:
    • 函数句柄主要用来「传递函数」——比如给fminsearch(求极值)、integral(积分)这类需要输入函数的工具函数传参,或者在不同工作区里调用某个函数。
    • 匿名函数适合快速写个简单的、只用一次的小逻辑,比如临时算个表达式,犯不上专门写个m文件。

看例子更清楚

% 1. 给内置余弦函数创建句柄
h1 = @cos;
h1(pi) % 输出 -1

% 2. 定义匿名函数,得到的是它的句柄
h2 = @(x) x.^3 + 2*x;
h2(2) % 输出 12

% 3. 假设你写了个my_add.m文件:function y = my_add(a,b) y=a+b; end
h3 = @my_add;
h3(3,5) % 输出 8

这里h1、h2、h3全都是函数句柄,但只有h2指向的是匿名函数。

内容的提问来源于stack exchange,提问作者Cris Luengo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:13:16