在MATLAB中声明一个全局变量

Ami*_*mit 36 matlab global-variables

有没有办法在MATLAB中声明全局变量?

请不要回复:

global x y z;
Run Code Online (Sandbox Code Playgroud)

因为我也可以阅读帮助文件.

我已经声明了一个全局变量,x然后做了类似这样的事情:

function[x] = test()
    global x;
    test1();
end
Run Code Online (Sandbox Code Playgroud)

其中函数test1()定义为:

function test1()
    x = 5;
end
Run Code Online (Sandbox Code Playgroud)

当我跑步时test(),我的输出是x = [].有没有办法让它输出x=5,或者我定义的任何东西x都在一个单独的函数中?在C中,这将是一个外部变量,我认为使它成为一个全局变量应该完成.

gno*_*ice 47

您需要在每个要在其中共享的范围(即函数/工作空间)中声明x全局变量.所以,你需要写作test1:

function test1()
  global x;
  x = 5;
end
Run Code Online (Sandbox Code Playgroud)

  • 这是对的.但是,"我应该在语言X中使用全局变量"这个问题的答案几乎总是"不要" (19认同)
  • @KitsuneYMG:同意.全局变量不是很漂亮,并且是一个很难跟踪,但在极少数情况下可能是一个必要的邪恶.如果我更了解OP的具体情况(我认为以上是一个简化的例子),我可能会提出一个更好的方法. (4认同)