【问题标题】:Is it possible to get access to variables inside function handles in Matlab?是否可以在 Matlab 中访问函数句柄内的变量?
【发布时间】:2017-04-20 23:22:35
【问题描述】:

例如说我定义:

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

可以吗

 f.c

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

我知道我可以在 Matlab 中创建对象和结构,但问题是我有一个包含一堆函数的 .mat 文件,我想查看它们正在使用的变量。在这种特定情况下,我试图通过仅访问 matlab 中的变量来避免重新编码我的东西,但是在我没有重新编码的选项的情况下,如果有一种方法来访问就好了定义函数句柄的变量/字段。我的意思是,当我调用f(3) 时,它会返回6,所以它显然知道某处的c,那么我该如何访问c

【问题讨论】:

    标签: matlab function handle


    【解决方案1】:

    这是可能的,使用函数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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      相关资源
      最近更新 更多