在MATLAB中声明一个全局variables

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

请不要回应:

global xyz; 

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

我已经声明了一个全局variablesx,然后做了这样的事情:

 function[x] = test() global x; test1(); end 

函数test1()被定义为:

 function test1() x = 5; end 

当我运行test() ,我的输出是x = [] 。 有没有一种方法,我可以使它输出x=5 ,或任何我定义x是在一个单独的function? 在C中,这将是一个外部variables,我认为使它成为一个全局variables应该完成这个…

您需要在每个范围(即函数/工作区)中将x声明为全局variables ,而您希望它在其中共享。 所以,你需要写test1为:

 function test1() global x; x = 5; end 

参考你对gnovice的评论,使用全局variables可以解决你的问题,但这不是一个常用的方法。

首先确保你的.m文件是函数而不是脚本脚本共享一个共同的工作空间,使其不容易覆盖你的variables。 相比之下,函数有自己的范围。

使用xUnit为您的函数生成可重复的unit testing。 通过testing程序中涉及的每个函数,您将追踪错误来源。 进行unit testing后,可以轻松validation进一步的代码修改。

解决global混乱的一种可能的方法是将variables分配为appdata 。 你可以使用函数setappdatagetappdata从MATLAB窗口分配和检索appdata 。 只要MATLAB会话处于活动状态,就会有一个由0表示的窗口。

 >> setappdata(0,'x',10) % 0 indicates the root MATLAB window 

现在,variablesx对任何脚本或函数都是不可见的,但可以通过使用getappdata在需要的地方访问。

 function test globalX = getappdata(0,'x'); disp(globalX); end x = 10 

好消息是,你可以分配任何有效的MATLAB对象的应用程序数据,只是谨慎的名称,使用像ModelOptimizerOptions而不是一个通用的x字段的唯一名称, y会有所帮助。 这也适用于在MATLAB生产服务器上部署的编译的可执行文件和代码。