首页 > 解决方案 > 为什么预定义的变量没有在函数句柄中显示它们的值?

问题描述

在 MATLAB R2020b 中,我有以下代码:

f=@(x) x.^2;
y=2;
g=@(x) f(x).*y

输出是

g = function_handle with value: @(x)f(x).*y

但是y = 2,所以我希望输出是@(x)f.*2。这是它应该如何工作还是一个错误?我可以将其显示为f.*2而不是f.*y

标签: matlabfunction-handle

解决方案


当您创建函数句柄g = @(x) f(x).*y时,变量的当前值fy“冻结”到g的定义中,如文档中所述。

f要检查和y使用的实际值g,您可以调用functions如下:

>> info = functions(g); disp(info)
            function: '@(x)f(x).*y'
                type: 'anonymous'
                file: ''
           workspace: {[1×1 struct]}
    within_file_path: '__base_function'

具体来说,请参见该workspace字段:

>> disp(info.workspace{1})
    f: @(x)x.^2
    y: 2

推荐阅读