【问题标题】:Is it possible in MATLAB to keep a variable in memory without using global variables?在 MATLAB 中是否可以在不使用全局变量的情况下将变量保留在内存中?
【发布时间】:2021-02-10 08:34:24
【问题描述】:

我有一个创建/加载变量的函数。该变量稍后必须在另一个(分离的)函数中使用。但是,为了满足软件要求,我不能将此变量作为输入传递。
为了解决这个问题,我在考虑使用global 变量。但是,出于几个原因,我想避免使用它们,尤其是因为运行时间显着增加。
因此,我正在寻找一种方法来完成以下任务

function func1(x) 
    global y 
    y = some_long_computation(x);
end

function w = func2(z)
    global y
    w = some_other_stuff(y, z);
end

不使用全局变量。
有办法吗?

【问题讨论】:

  • 为什么有“软件要求”不能传递变量?如果这是不可能的,我认为你已经回答了你自己的问题......persistent 变量将是唯一的选择,但不能跨越不同的函数。
  • 函数可以是类的方法吗?您必须将它们称为 obj.func1(x) 而不是 func1(x)
  • 我认为他们可以。但我以前从未使用过课程。

标签: matlab global-variables shared-memory


【解决方案1】:

一个可能的解决方案是使用nested functions:

function main
    y = [];
    func1(3);
    w = func2(5);
    
    function func1(x)        
        y = some_long_computation(x);
    end

    function w = func2(z)
        w = some_other_stuff(y, z);
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 2013-11-05
    • 1970-01-01
    • 2014-01-09
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多