Rob*_*ier 4 matlab global-variables
我正在 Linux 上使用 Matlab R2018a。我收到警告消息:
“警告:局部变量的值可能已更改以匹配全局变量。MATLAB 的未来版本将要求您在使用该变量之前将变量声明为全局变量。”
警告伴随着文件名和行号,但该行有几个变量,所以我想知道消息指的是哪一个。
有没有办法找出警告抱怨的变量?
有没有办法将警告变成错误?也许这会使解决问题更容易,而不仅仅是容忍它。
此错误在您将变量声明为全局变量的行上触发,但该变量已作为局部变量使用:
baz = 3;
% ... much later...
global foo bar baz
Run Code Online (Sandbox Code Playgroud)
要找出这些变量中的哪些已经定义,您可以在该global行设置断点,然后查看当时存在哪些变量。
您还可以who在此行之前添加一个命令,并在生成警告之前观察程序的控制台输出。
找到触发错误的变量名称后,您可以使用该名称重命名局部变量,而保持全局变量不变。
向 @flawr 和 @SardarUsama 致谢,他们在MATLAB 聊天中帮助找出了这条警告消息的含义。
以下是原始答案的一部分,它显示了一种确定变量是否为全局变量的方法。
正如@Durkee 建议的那样,whos global将列出全局变量。您可以以编程方式使用它来测试“全局性”:
~isempty(whos('global','varname'))
Run Code Online (Sandbox Code Playgroud)
(请注意,isglobal很久以前曾经是MATLAB 中的一个函数,但此后已被删除)。