在MATLAB中的两个函数之间共享一个变量?

时间:2012-06-06 16:29:24

标签: matlab

我在matlab中有两个函数,大致看起来像这样

function f1()
  setup_callback(@f2);
  a = 1;
  evaluate_callback();
end

function f2()
  ...
end

其中evaluate_callback是一个调用f2的外部库函数。

我希望能够从f2中读取a的当前值。有没有办法在不使用全局变量的情况下实现这一目标?

2 个答案:

答案 0 :(得分:9)

f2内设置f1嵌套函数:

function f1()
    setup_callback(@f2);
    a = 1;
    evaluate_callback();

    function f2()
      %# you can access a here
      disp(a)
    end
end

答案 1 :(得分:2)

嵌套函数将提供您想要的范围。请注意,除了来自f1内部或通过函数句柄之外,没有其他方法可以调用f2回调函数。所以f1可以返回@f2句柄,而全局范围内的其他函数可以这样调用它。

function f1()
  setup_callback(@f2);
  a = 1;
  evaluate_callback();

  function f2()
    % refer to a
    ...
  end
end