是否可以在Matlab中访问函数句柄内的变量?

时间:2017-04-20 23:22:35

标签: matlab function handle

例如说我定义:

c=3;
f = @(x) x + c;

可以吗

 f.c

或基本上可以访问函数句柄中的变量吗?

我知道我可以在Matlab中创建对象和结构但问题是我有一个带有大量函数的.mat文件,我希望看到它们正在使用的变量。在这个特定的场景中,我试图通过访问matlab中的变量来避免重新编码我的东西,但是如果我没有选择重新编码它,那么就有办法访问定义函数句柄的变量/字段。我的意思是,当我致电f(3)时,它会返回6,因此它显然知道某处c,所以如何才能访问c

1 个答案:

答案 0 :(得分:9)

可以使用函数functions。调用F = functions(f)会返回一个结构F,其中包含有关句柄f的函数的信息。当fanonymous function的句柄时,就像您的情况一样,F的一个字段是workspace,其中包含有关匿名函数所需变量的信息:

>> c = 3;
>> f = @(x) x + c;
>> F = functions(f)
F = 
            function: '@(x)x+c'
                type: 'anonymous'
                file: ''
           workspace: {[1x1 struct]}
    within_file_path: '__base_function'
>> F.workspace{1}.c
ans =
     3