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

Cha*_*ker 2 matlab function handle

比如说我定义:

c=3;
f = @(x) x + c;
Run Code Online (Sandbox Code Playgroud)

是可以做到的

 f.c
Run Code Online (Sandbox Code Playgroud)

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

我知道我可以在Matlab中创建对象和结构但是问题是我有一个带有一堆函数的.mat文件,我希望看到它们正在使用的变量.在这个特定的场景中,我试图通过访问matlab中的变量来避免重新编码我的东西,但是在我没有选择重新编码的情况下,有一种方法可以访问定义函数句柄的变量/字段.我的意思是,当我打电话给f(3)它返回6所以它显然知道c某个地方,所以我如何获得它c

Lui*_*ndo 9

使用该功能是可能的functions.调用F = functions(f)返回一个结构,F其中包含有关带句柄的函数的信息f.何时f匿名函数的句柄,如您的情况,其中一个字段Fworkspace,其中包含有关匿名函数所需变量的信息:

>> 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
Run Code Online (Sandbox Code Playgroud)