我在 Linux 上使用 Matlab R2018a。我收到警告消息:
“警告:局部变量的值可能已更改以匹配全局变量。 future 版本的 MATLAB 将要求您在使用该变量之前将其声明为全局变量。”
警告伴随着文件名和行号,但该行上有几个变量,所以我想知道消息指的是哪一个。
有没有办法找出警告所提示的变量?
有没有办法把警告变成错误?也许这样可以更容易地解决问题,而不是仅仅容忍它。
最佳答案
此错误是在您将变量声明为全局变量但该变量已用作局部变量的行上触发的:
baz = 3;
% ... much later...
global foo bar baz
要找出这些变量中哪些已被定义,您可以在 global
行设置一个断点,并查看当时存在哪些变量。
您还可以在此行之前添加一个 who
命令,并在生成警告之前观察程序的控制台输出。
一旦找到触发错误的变量名称,您可以使用该名称重命名本地 变量,同时保持全局 变量不变。
感谢@flawr 和@SardarUsama,他们在 MATLAB chat 上帮助弄清了这条警告消息的含义。 .
下面是原始答案的一部分,它显示了一种确定变量是否为全局变量的方法。
作为@Durkee suggested , whos global
将列出全局变量。您可以以编程方式使用它来测试“全局性”:
~isempty(whos('global','varname'))
(请注意 isglobal
used to be a function in MATLAB a long time ago ,但已被删除)。
关于matlab - 如何找出哪个变量触发了有关全局变量的 Matlab 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029952/